From 89837f9497e72ed0b73e8332581b30267e662b84 Mon Sep 17 00:00:00 2001 From: GlodBlock <1356392126@qq.com> Date: Mon, 30 May 2022 19:33:34 +0800 Subject: [PATCH] fix pattern remove and add --- .../gui/container/FCBasePartContainer.java | 11 +++++++++- .../gui/container/FCBasePartContainerEx.java | 11 +++++++++- .../parts/PartFluidPatternTerminal.java | 20 +++++++++++++++++++ .../parts/PartFluidPatternTerminalEx.java | 20 +++++++++++++++++++ .../github/util/FluidPatternDetails.java | 4 ++-- 5 files changed, 62 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainer.java b/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainer.java index 320088fd..490961d6 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainer.java +++ b/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainer.java @@ -21,6 +21,7 @@ import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.inv.AdaptorPlayerHand; import appeng.util.item.AEItemStack; +import com.glodblock.github.common.item.ItemFluidEncodedPattern; import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.common.parts.PartFluidPatternTerminal; import com.glodblock.github.util.Util; @@ -208,6 +209,12 @@ public class FCBasePartContainer extends FCBaseMonitorContain implements IAEAppE output = encodedPatternStack; this.patternSlotOUT.putStack( output ); } + } else if ( output.getItem() instanceof ItemFluidEncodedPattern ) { + for( final ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() ) + { + output = encodedPatternStack; + this.patternSlotOUT.putStack( output ); + } } // encode the slot. @@ -298,7 +305,9 @@ public class FCBasePartContainer extends FCBaseMonitorContain implements IAEAppE { return false; } - + if (output.getItem() instanceof ItemFluidEncodedPattern) { + return true; + } final IDefinitions definitions = AEApi.instance().definitions(); boolean isPattern = definitions.items().encodedPattern().isSameAs( output ); diff --git a/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java b/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java index 3e5d323f..6592b23c 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java +++ b/src/main/java/com/glodblock/github/client/gui/container/FCBasePartContainerEx.java @@ -10,6 +10,7 @@ import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.IAEAppEngInventory; import appeng.tile.inventory.InvOperation; import appeng.util.Platform; +import com.glodblock.github.common.item.ItemFluidEncodedPattern; import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.common.parts.PartFluidPatternTerminalEx; import com.glodblock.github.util.Util; @@ -151,6 +152,12 @@ public class FCBasePartContainerEx extends FCBaseMonitorContain implements IAEAp output = encodedPatternStack; this.patternSlotOUT.putStack( output ); } + } else if ( output.getItem() instanceof ItemFluidEncodedPattern ) { + for( final ItemStack encodedPatternStack : AEApi.instance().definitions().items().encodedPattern().maybeStack( 1 ).asSet() ) + { + output = encodedPatternStack; + this.patternSlotOUT.putStack( output ); + } } // encode the slot. @@ -228,7 +235,9 @@ public class FCBasePartContainerEx extends FCBaseMonitorContain implements IAEAp { return false; } - + if (output.getItem() instanceof ItemFluidEncodedPattern) { + return true; + } final IDefinitions definitions = AEApi.instance().definitions(); boolean isPattern = definitions.items().encodedPattern().isSameAs( output ); diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java index a17b4f63..413518a4 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminal.java @@ -131,6 +131,16 @@ public class PartFluidPatternTerminal extends FCBasePart { this.setCraftingRecipe( details.isCraftable() ); this.setSubstitution( details.canSubstitute() ); + for( int x = 0; x < this.crafting.getSizeInventory(); x++ ) + { + this.crafting.setInventorySlotContents( x, null ); + } + + for( int x = 0; x < this.output.getSizeInventory(); x++ ) + { + this.output.setInventorySlotContents( x, null ); + } + for( int x = 0; x < this.crafting.getSizeInventory() && x < details.getInputs().length; x++ ) { final IAEItemStack item = details.getInputs()[x]; @@ -166,6 +176,16 @@ public class PartFluidPatternTerminal extends FCBasePart { this.setCraftingRecipe( details.isCraftable() ); this.setSubstitution( details.canSubstitute() ); + for( int x = 0; x < this.crafting.getSizeInventory(); x++ ) + { + this.crafting.setInventorySlotContents( x, null ); + } + + for( int x = 0; x < this.output.getSizeInventory(); x++ ) + { + this.output.setInventorySlotContents( x, null ); + } + for( int x = 0; x < this.crafting.getSizeInventory() && x < details.getInputs().length; x++ ) { final IAEItemStack item = details.getInputs()[x]; diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java index 34849532..c6f573c1 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidPatternTerminalEx.java @@ -127,6 +127,16 @@ public class PartFluidPatternTerminalEx extends FCBasePart { { this.setSubstitution( details.canSubstitute() ); + for( int x = 0; x < this.crafting.getSizeInventory(); x++ ) + { + this.crafting.setInventorySlotContents( x, null ); + } + + for( int x = 0; x < this.output.getSizeInventory(); x++ ) + { + this.output.setInventorySlotContents( x, null ); + } + for( int x = 0; x < this.crafting.getSizeInventory() && x < details.getInputs().length; x++ ) { final IAEItemStack item = details.getInputs()[x]; @@ -157,6 +167,16 @@ public class PartFluidPatternTerminalEx extends FCBasePart { { this.setSubstitution( details.canSubstitute() ); + for( int x = 0; x < this.crafting.getSizeInventory(); x++ ) + { + this.crafting.setInventorySlotContents( x, null ); + } + + for( int x = 0; x < this.output.getSizeInventory(); x++ ) + { + this.output.setInventorySlotContents( x, null ); + } + for( int x = 0; x < this.crafting.getSizeInventory() && x < details.getInputs().length; x++ ) { final IAEItemStack item = details.getInputs()[x]; diff --git a/src/main/java/com/glodblock/github/util/FluidPatternDetails.java b/src/main/java/com/glodblock/github/util/FluidPatternDetails.java index 275f6374..dffb9dbc 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("Inputs", Constants.NBT.TAG_COMPOUND), 9)) - && setOutputs(readStackArray(tag.getTagList("Outputs", Constants.NBT.TAG_COMPOUND), 3)); + return setInputs(readStackArray(tag.getTagList("in", Constants.NBT.TAG_COMPOUND), 9)) + && setOutputs(readStackArray(tag.getTagList("out", Constants.NBT.TAG_COMPOUND), 3)); } public static IAEItemStack[] readStackArray(NBTTagList listTag, int maxCount) {