From 00ccec53f39bbc23e71bd6256e2f2a460452276a Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Mon, 30 May 2022 21:45:14 +0800 Subject: [PATCH] make extended pattern actually work --- .../client/gui/container/ContainerFluidPatternTerminal.java | 4 ++++ .../client/gui/container/ContainerFluidPatternTerminalEx.java | 4 ++++ .../java/com/glodblock/github/util/FluidPatternDetails.java | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java index 936c8309..c725390b 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminal.java @@ -150,6 +150,10 @@ public class ContainerFluidPatternTerminal extends FCBasePartContainer implement } Slot slot = getSlot(slotId); ItemStack stack = player.inventory.getItemStack(); + if (Util.getFluidFromItem(stack) == null || Util.getFluidFromItem(stack).amount <= 0) { + super.doAction(player, action, slotId, id); + return; + } if ((slot instanceof SlotFakeCraftingMatrix || slot instanceof SlotPatternOutputs) && stack != null && (stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(stack))) { FluidStack fluid = null; diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java index 45318e32..4ba4fb91 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerFluidPatternTerminalEx.java @@ -143,6 +143,10 @@ public class ContainerFluidPatternTerminalEx extends FCBasePartContainerEx imple } Slot slot = getSlot(slotId); ItemStack stack = player.inventory.getItemStack(); + if (Util.getFluidFromItem(stack) == null || Util.getFluidFromItem(stack).amount <= 0) { + super.doAction(player, action, slotId, id); + return; + } if ((slot instanceof SlotFakeCraftingMatrix || slot instanceof SlotPatternOutputs) && stack != null && (stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(stack))) { FluidStack fluid = null; diff --git a/src/main/java/com/glodblock/github/util/FluidPatternDetails.java b/src/main/java/com/glodblock/github/util/FluidPatternDetails.java index dffb9dbc..fe2038fe 100644 --- a/src/main/java/com/glodblock/github/util/FluidPatternDetails.java +++ b/src/main/java/com/glodblock/github/util/FluidPatternDetails.java @@ -186,8 +186,8 @@ public class FluidPatternDetails implements ICraftingPatternDetails, Comparable< NBTTagCompound tag = Objects.requireNonNull(patternStack.getTagCompound()); // may be possible to enter a partially-correct state if setInputs succeeds but setOutputs failed // but outside code should treat it as completely incorrect and not attempt to make calls - return setInputs(readStackArray(tag.getTagList("in", Constants.NBT.TAG_COMPOUND), 9)) - && setOutputs(readStackArray(tag.getTagList("out", Constants.NBT.TAG_COMPOUND), 3)); + return setInputs(readStackArray(tag.getTagList("in", Constants.NBT.TAG_COMPOUND), 16)) + && setOutputs(readStackArray(tag.getTagList("out", Constants.NBT.TAG_COMPOUND), 4)); } public static IAEItemStack[] readStackArray(NBTTagList listTag, int maxCount) {