mirror of
https://github.com/GTNewHorizons/NotEnoughEnergistics.git
synced 2026-10-26 14:23:58 +00:00
Add NEI Fluids Support (#83)
This commit is contained in:
1 parent
88614bd1f1
commit
7d41385a79
7 files changed
+37
-63
No files matched your search
+1
-1
@@ -1,7 +1,7 @@
|
||||
dependencies {
|
||||
|
||||
api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-1023-GTNH:dev")
|
||||
api("com.github.GTNewHorizons:NotEnoughItems:2.8.116-GTNH:dev")
|
||||
api("com.github.GTNewHorizons:NotEnoughItems:2.8.134-GTNH:dev")
|
||||
api('com.github.GTNewHorizons:CodeChickenCore:1.4.17:dev')
|
||||
|
||||
implementation("com.github.GTNewHorizons:Baubles-Expanded:2.2.21-GTNH:dev")
|
||||
|
||||
@@ -12,9 +12,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
@@ -35,9 +32,7 @@ import com.github.vfyjxf.nee.network.NEENetworkHandler;
|
||||
import com.github.vfyjxf.nee.network.packet.PacketSlotStackChange;
|
||||
import com.github.vfyjxf.nee.network.packet.PacketStackCountChange;
|
||||
import com.github.vfyjxf.nee.network.packet.PacketValueConfigServer;
|
||||
import com.github.vfyjxf.nee.processor.GregTech5RecipeProcessor;
|
||||
import com.github.vfyjxf.nee.utils.ItemUtils;
|
||||
import com.github.vfyjxf.nee.utils.ModIDs;
|
||||
import com.glodblock.github.client.gui.GuiLevelMaintainer;
|
||||
|
||||
import appeng.api.events.GuiScrollEvent;
|
||||
@@ -67,7 +62,6 @@ import codechicken.nei.recipe.RecipeInfo;
|
||||
import codechicken.nei.util.NEIMouseUtils;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import gregtech.api.enums.ItemList;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
|
||||
@@ -349,10 +343,10 @@ public class GuiEventHandler extends INEIGuiAdapter implements IContainerTooltip
|
||||
if (currentStackIndex < 0) return;
|
||||
final ItemStack nextStack = items.get(Math.floorMod(currentStackIndex - dWheel, items.size())).copy();
|
||||
|
||||
final FluidStack nextFluidStack = getFluidStackOrNull(nextStack);
|
||||
final FluidStack nextFluidStack = ItemUtils.getFluidFromDisplayStack(nextStack);
|
||||
|
||||
final ItemStack baseStack = baseIngredients.item;
|
||||
final FluidStack baseFluidStack = getFluidStackOrNull(baseStack);
|
||||
final FluidStack baseFluidStack = ItemUtils.getFluidFromDisplayStack(baseStack);
|
||||
final long baseStackSize = baseFluidStack == null ? baseStack.stackSize : baseFluidStack.amount;
|
||||
|
||||
final Int2ObjectMap<IAEStack<?>> craftingSlots = new Int2ObjectOpenHashMap<>();
|
||||
@@ -363,7 +357,7 @@ public class GuiEventHandler extends INEIGuiAdapter implements IContainerTooltip
|
||||
final ItemStack slotStack = slotAEStack.getItemStackForNEI();
|
||||
if (slotStack == null) continue;
|
||||
|
||||
final FluidStack slotFluidStack = getFluidStackOrNull(slotStack);
|
||||
final FluidStack slotFluidStack = ItemUtils.getFluidFromDisplayStack(slotStack);
|
||||
final long slotStackSize = slotFluidStack == null ? slotStack.stackSize : slotFluidStack.amount;
|
||||
|
||||
final PositionedStack slotIngredients = NEEPatternTerminalHandler.ingredients
|
||||
@@ -393,7 +387,7 @@ public class GuiEventHandler extends INEIGuiAdapter implements IContainerTooltip
|
||||
}
|
||||
}
|
||||
} else {
|
||||
FluidStack baseSlotFluidStack = getFluidStackOrNull(baseSlotStack);
|
||||
FluidStack baseSlotFluidStack = ItemUtils.getFluidFromDisplayStack(baseSlotStack);
|
||||
final long baseSlotStackSize = baseSlotFluidStack == null ? baseSlotStack.stackSize
|
||||
: baseSlotFluidStack.amount;
|
||||
|
||||
@@ -441,12 +435,4 @@ public class GuiEventHandler extends INEIGuiAdapter implements IContainerTooltip
|
||||
return uniqueItems;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private FluidStack getFluidStackOrNull(@Nonnull ItemStack displayStack) {
|
||||
if (Loader.isModLoaded(ModIDs.GT) && displayStack.getItem() == ItemList.Display_Fluid.getItem()) {
|
||||
return GregTech5RecipeProcessor.getFluidFromDisplayStack(displayStack);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import com.djgiannuzz.thaumcraftneiplugin.items.ItemAspect;
|
||||
import com.github.vfyjxf.nee.utils.GuiUtils;
|
||||
@@ -30,7 +31,6 @@ import appeng.container.implementations.ContainerPatternTerm;
|
||||
import appeng.helpers.IContainerCraftingPacket;
|
||||
import appeng.util.item.AEFluidStack;
|
||||
import appeng.util.item.AEItemStack;
|
||||
import codechicken.nei.recipe.StackInfo;
|
||||
import cpw.mods.fml.common.network.ByteBufUtils;
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||
@@ -206,8 +206,9 @@ public class PacketNEIPatternRecipe implements IMessage {
|
||||
}
|
||||
|
||||
private IAEStack<?> getAEStack(final ItemStack is) {
|
||||
if (StackInfo.itemStackToNBT(is).hasKey("gtFluidName")) {
|
||||
return AEFluidStack.create(StackInfo.getFluid(is));
|
||||
final FluidStack fluidStack = ItemUtils.getFluidFromDisplayStack(is);
|
||||
if (fluidStack != null) {
|
||||
return AEFluidStack.create(fluidStack);
|
||||
} else if (ThaumicEnergistics_isLoaded && isAspect(is)) {
|
||||
return AEStackTypeRegistry.getType(ESSENTIA_STACK_ID).convertStackFromItem(is);
|
||||
} else {
|
||||
|
||||
@@ -8,6 +8,8 @@ import java.util.Set;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.github.vfyjxf.nee.utils.ItemUtils;
|
||||
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.recipe.IRecipeHandler;
|
||||
|
||||
@@ -62,8 +64,8 @@ public class GTPPRecipeProcessor implements IRecipeProcessor {
|
||||
if (this.getAllOverlayIdentifier().contains(identifier)) {
|
||||
recipeInputs.addAll(recipe.getIngredientStacks(recipeIndex));
|
||||
recipeInputs.removeIf(
|
||||
positionedStack -> GregTech5RecipeProcessor.getFluidFromDisplayStack(positionedStack.items[0])
|
||||
!= null || positionedStack.item.stackSize == 0);
|
||||
positionedStack -> ItemUtils.getFluidFromDisplayStack(positionedStack.items[0]) != null
|
||||
|| positionedStack.item.stackSize == 0);
|
||||
return recipeInputs;
|
||||
}
|
||||
return recipeInputs;
|
||||
@@ -75,9 +77,8 @@ public class GTPPRecipeProcessor implements IRecipeProcessor {
|
||||
List<PositionedStack> recipeOutputs = new ArrayList<>();
|
||||
if (this.getAllOverlayIdentifier().contains(identifier)) {
|
||||
recipeOutputs.addAll(recipe.getOtherStacks(recipeIndex));
|
||||
recipeOutputs.removeIf(
|
||||
positionedStack -> GregTech5RecipeProcessor.getFluidFromDisplayStack(positionedStack.items[0])
|
||||
!= null);
|
||||
recipeOutputs
|
||||
.removeIf(positionedStack -> ItemUtils.getFluidFromDisplayStack(positionedStack.items[0]) != null);
|
||||
return recipeOutputs;
|
||||
}
|
||||
return recipeOutputs;
|
||||
|
||||
@@ -8,6 +8,8 @@ import java.util.Set;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.github.vfyjxf.nee.utils.ItemUtils;
|
||||
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.recipe.IRecipeHandler;
|
||||
|
||||
@@ -32,8 +34,8 @@ public class GoodGeneratorRecipeProcessor implements IRecipeProcessor {
|
||||
if (this.getAllOverlayIdentifier().contains(identifier)) {
|
||||
recipeInputs.addAll(recipe.getIngredientStacks(recipeIndex));
|
||||
recipeInputs.removeIf(
|
||||
positionedStack -> GregTech5RecipeProcessor.getFluidFromDisplayStack(positionedStack.items[0])
|
||||
!= null || positionedStack.item.stackSize == 0);
|
||||
positionedStack -> ItemUtils.getFluidFromDisplayStack(positionedStack.items[0]) != null
|
||||
|| positionedStack.item.stackSize == 0);
|
||||
return recipeInputs;
|
||||
}
|
||||
return recipeInputs;
|
||||
@@ -45,9 +47,8 @@ public class GoodGeneratorRecipeProcessor implements IRecipeProcessor {
|
||||
List<PositionedStack> recipeOutputs = new ArrayList<>();
|
||||
if (this.getAllOverlayIdentifier().contains(identifier)) {
|
||||
recipeOutputs.addAll(recipe.getOtherStacks(recipeIndex));
|
||||
recipeOutputs.removeIf(
|
||||
positionedStack -> GregTech5RecipeProcessor.getFluidFromDisplayStack(positionedStack.items[0])
|
||||
!= null);
|
||||
recipeOutputs
|
||||
.removeIf(positionedStack -> ItemUtils.getFluidFromDisplayStack(positionedStack.items[0]) != null);
|
||||
return recipeOutputs;
|
||||
}
|
||||
return recipeOutputs;
|
||||
|
||||
@@ -9,16 +9,10 @@ import java.util.stream.Collectors;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import com.github.vfyjxf.nee.config.NEEConfig;
|
||||
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.recipe.IRecipeHandler;
|
||||
import gregtech.api.enums.ItemList;
|
||||
import gregtech.api.recipe.RecipeCategory;
|
||||
|
||||
/**
|
||||
@@ -45,23 +39,6 @@ public class GregTech5RecipeProcessor implements IRecipeProcessor {
|
||||
this.isNH = isNH;
|
||||
}
|
||||
|
||||
/**
|
||||
* For resolving NoSuchMethodError Copied from GTNewHorizons/GT5-Unofficial.
|
||||
*/
|
||||
public static FluidStack getFluidFromDisplayStack(ItemStack aDisplayStack) {
|
||||
if (!isStackValid(aDisplayStack) || aDisplayStack.getItem() != ItemList.Display_Fluid.getItem()
|
||||
|| !aDisplayStack.hasTagCompound()) {
|
||||
return null;
|
||||
}
|
||||
Fluid tFluid = FluidRegistry.getFluid(ItemList.Display_Fluid.getItem().getDamage(aDisplayStack));
|
||||
return new FluidStack(tFluid, (int) aDisplayStack.getTagCompound().getLong("mFluidDisplayAmount"));
|
||||
}
|
||||
|
||||
public static boolean isStackValid(Object aStack) {
|
||||
return (aStack instanceof ItemStack) && ((ItemStack) aStack).getItem() != null
|
||||
&& ((ItemStack) aStack).stackSize >= 0;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public Set<String> getAllOverlayIdentifier() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.JsonToNBT;
|
||||
import net.minecraft.nbt.NBTException;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import com.github.vfyjxf.nee.NotEnoughEnergistics;
|
||||
import com.github.vfyjxf.nee.processor.IRecipeProcessor;
|
||||
@@ -20,13 +21,12 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
|
||||
import codechicken.nei.NEIServerUtils;
|
||||
import codechicken.nei.recipe.StackInfo;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public final class ItemUtils {
|
||||
|
||||
private static final String GT_DISPLAY_FLUID_ITEM_ID = "gt.GregTech_FluidDisplay";
|
||||
|
||||
public static Gson gson = new Gson();
|
||||
public static List<StackProcessor> transformItemBlacklist = getTransformItemBlacklist();
|
||||
public static List<StackProcessor> transformItemPriorityList = getTransformItemPriorityList();
|
||||
@@ -44,6 +44,15 @@ public final class ItemUtils {
|
||||
transformItemPriorityList = getTransformItemPriorityList();
|
||||
}
|
||||
|
||||
public static FluidStack getFluidFromDisplayStack(ItemStack aDisplayStack) {
|
||||
|
||||
if (aDisplayStack != null && aDisplayStack.getItem() != null && StackInfo.isFluidDisplayItem(aDisplayStack)) {
|
||||
return StackInfo.getFluid(aDisplayStack);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static List<StackProcessor> getTransformItemBlacklist() {
|
||||
List<StackProcessor> transformItemBlacklist = new ArrayList<>();
|
||||
for (String itemJsonString : transformBlacklist) {
|
||||
@@ -186,12 +195,11 @@ public final class ItemUtils {
|
||||
}
|
||||
|
||||
public static boolean areStacksSameType(ItemStack aStack, ItemStack bStack) {
|
||||
if (Loader.isModLoaded(ModIDs.GT) && aStack != null && bStack != null) {
|
||||
Item displayFluidItem = GameRegistry.findItem(ModIDs.GT, GT_DISPLAY_FLUID_ITEM_ID);
|
||||
if (displayFluidItem != null && aStack.getItem() == displayFluidItem
|
||||
&& bStack.getItem() == displayFluidItem) {
|
||||
return displayFluidItem.getDamage(aStack) == displayFluidItem.getDamage(bStack);
|
||||
}
|
||||
final FluidStack aFluid = getFluidFromDisplayStack(aStack);
|
||||
final FluidStack bFluid = getFluidFromDisplayStack(bStack);
|
||||
|
||||
if (aFluid != null && bFluid != null) {
|
||||
return aFluid.isFluidEqual(bFluid);
|
||||
}
|
||||
|
||||
return NEIServerUtils.areStacksSameTypeCraftingWithNBT(aStack, bStack);
|
||||
|
||||
Reference in new issue
Block a user