mirror of
https://github.com/GTNewHorizons/NotEnoughItems.git
synced 2026-11-08 12:34:46 +00:00
Correctly filtering neifluids (#1027)
This commit is contained in:
1 parent
2bf5a1cf9f
commit
af6dba1269
5 files changed
+43
-13
No files matched your search
@@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack;
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.api.IRecipeFilter;
|
||||
import codechicken.nei.api.ItemFilter;
|
||||
import codechicken.nei.api.ItemInfo;
|
||||
import codechicken.nei.recipe.IRecipeHandler;
|
||||
|
||||
public class RecipeFilter implements IRecipeFilter {
|
||||
@@ -78,7 +79,7 @@ public class RecipeFilter implements IRecipeFilter {
|
||||
if (pStack == null) return false;
|
||||
|
||||
for (ItemStack stack : pStack.items) {
|
||||
if (this.filter.matches(stack)) {
|
||||
if (!ItemInfo.isHidden(stack) && this.filter.matches(stack)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,20 +74,18 @@ class SearchRecipeHandler<H extends IRecipeHandler> {
|
||||
}
|
||||
|
||||
List<Integer> filtered = null;
|
||||
final List<Integer> recipes = IntStream.range(0, filteredRecipes.size()).boxed()
|
||||
.collect(Collectors.toCollection(ArrayList::new));
|
||||
final List<Integer> recipes = IntStream.range(0, filteredRecipes.size()).boxed().collect(Collectors.toList());
|
||||
|
||||
try {
|
||||
filtered = ItemList.forkJoinPool.submit(
|
||||
() -> recipes.parallelStream()
|
||||
.filter(recipe -> mathRecipe(this.original, filteredRecipes.get(recipe), filter))
|
||||
.collect(Collectors.toCollection(ArrayList::new)))
|
||||
.collect(Collectors.toList()))
|
||||
.get();
|
||||
|
||||
filtered.sort((a, b) -> a - b);
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
return filtered;
|
||||
|
||||
@@ -126,7 +126,15 @@ public class StackInfo {
|
||||
}
|
||||
|
||||
public static boolean equalItemAndNBT(ItemStack stackA, ItemStack stackB, boolean useNBT) {
|
||||
if (stackA == null || stackB == null || stackA.getItem() != stackB.getItem()) {
|
||||
if (stackA == null || stackB == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isFluidDisplayItem(stackA)) {
|
||||
return isFluidDisplayItem(stackB) && getFluid(stackA).isFluidEqual(getFluid(stackB));
|
||||
}
|
||||
|
||||
if (stackA.getItem() != stackB.getItem()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -158,7 +166,8 @@ public class StackInfo {
|
||||
}
|
||||
|
||||
public static boolean isFluidContainer(ItemStack stack) {
|
||||
return stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(stack);
|
||||
return stack.getItem() instanceof IFluidContainerItem && !isFluidDisplayItem(stack)
|
||||
|| FluidContainerRegistry.isContainer(stack);
|
||||
}
|
||||
|
||||
public static String getItemStackGUID(ItemStack stack) {
|
||||
|
||||
@@ -4,8 +4,11 @@ import java.util.regex.Pattern;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import codechicken.nei.api.ItemFilter;
|
||||
import codechicken.nei.recipe.StackInfo;
|
||||
import cpw.mods.fml.common.registry.GameData;
|
||||
|
||||
public class IdentifierFilter implements ItemFilter {
|
||||
@@ -18,15 +21,33 @@ public class IdentifierFilter implements ItemFilter {
|
||||
|
||||
@Override
|
||||
public boolean matches(ItemStack stack) {
|
||||
final FluidStack fluidStack = StackInfo.isFluidDisplayItem(stack) ? StackInfo.getFluid(stack) : null;
|
||||
|
||||
if (fluidStack != null) {
|
||||
return this.pattern.matcher(getFluidStringIdentifier(fluidStack) + "\n" + getFluidIdentifier(fluidStack))
|
||||
.find();
|
||||
}
|
||||
|
||||
return this.pattern.matcher(getStringIdentifier(stack) + "\n" + getIdentifier(stack)).find();
|
||||
}
|
||||
|
||||
protected String getFluidIdentifier(FluidStack fluidStack) {
|
||||
return String.valueOf(FluidRegistry.getFluidID(fluidStack.getFluid()));
|
||||
}
|
||||
|
||||
protected String getFluidStringIdentifier(FluidStack fluidStack) {
|
||||
final String name = FluidRegistry.getDefaultFluidName(fluidStack.getFluid());
|
||||
|
||||
return name == null || name.isEmpty() ? "Unknown:Unknown" : name;
|
||||
}
|
||||
|
||||
protected String getIdentifier(ItemStack stack) {
|
||||
return Item.getIdFromItem(stack.getItem()) + ":" + stack.getItemDamage();
|
||||
}
|
||||
|
||||
protected String getStringIdentifier(ItemStack stack) {
|
||||
String name = GameData.getItemRegistry().getNameForObject(stack.getItem());
|
||||
final String name = GameData.getItemRegistry().getNameForObject(stack.getItem());
|
||||
|
||||
return name == null || name.isEmpty() ? "Unknown:Unknown" : name;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,12 @@ import java.util.regex.Pattern;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import codechicken.nei.NEIClientConfig;
|
||||
import codechicken.nei.api.ItemFilter;
|
||||
import codechicken.nei.api.ItemInfo;
|
||||
import codechicken.nei.item.ItemFluidDisplay;
|
||||
import codechicken.nei.recipe.StackInfo;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.ModContainer;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
@@ -41,9 +42,10 @@ public class ModNameFilter implements ItemFilter {
|
||||
}
|
||||
|
||||
protected static String getModId(ItemStack itemStack) {
|
||||
final FluidStack fluidStack = StackInfo.isFluidDisplayItem(itemStack) ? StackInfo.getFluid(itemStack) : null;
|
||||
|
||||
if (itemStack.getItem() instanceof ItemFluidDisplay fluidDisplay) {
|
||||
return getFluidModId(fluidDisplay, itemStack);
|
||||
if (fluidStack != null) {
|
||||
return getFluidModId(fluidStack.getFluid());
|
||||
}
|
||||
|
||||
if (!ItemInfo.itemOwners.containsKey(itemStack.getItem())) {
|
||||
@@ -59,8 +61,7 @@ public class ModNameFilter implements ItemFilter {
|
||||
return ItemInfo.itemOwners.get(itemStack.getItem());
|
||||
}
|
||||
|
||||
private static String getFluidModId(ItemFluidDisplay fluidDisplay, ItemStack itemStack) {
|
||||
final Fluid fluid = FluidRegistry.getFluid(itemStack.getItemDamage());
|
||||
private static String getFluidModId(Fluid fluid) {
|
||||
final String fluidName = FluidRegistry.getDefaultFluidName(fluid);
|
||||
|
||||
if (!fluidOwners.containsKey(fluidName)) {
|
||||
|
||||
Reference in new issue
Block a user