From 18b4fbe358ba12e9ece3642d6a405859169ffd27 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 4 Nov 2017 19:12:46 +0100 Subject: [PATCH] You can now re-insert a Pattern in the pattern output slot in the Pattern Grid to modify an existing pattern --- CHANGELOG.md | 1 + .../apiimpl/network/node/NetworkNodeGrid.java | 17 +++++++++++++---- .../refinedstorage/container/ContainerGrid.java | 2 +- .../refinedstorage/item/ItemPattern.java | 1 + 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e8a6dbd4..34bd96c43 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### 1.5.22 - Added oredict, blocking, processing, ore inputs access to OpenComputers API (raoulvdberge) - The Crafter can now only store 1 stack size pattern per slot (raoulvdberge) +- You can now re-insert a Pattern in the pattern output slot in the Pattern Grid to modify an existing pattern (raoulvdberge) - Fixed not being able to use JEI R and U keys on Grid with tabs (raoulvdberge) ### 1.5.21 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java index bd3cdee03..917f01f08 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeGrid.java @@ -39,7 +39,6 @@ import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.wrapper.CombinedInvWrapper; import net.minecraftforge.items.wrapper.InvWrapper; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; @@ -74,10 +73,20 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid { private ItemHandlerBase matrixProcessing = new ItemHandlerBase(9 * 2, new ItemHandlerListenerNetworkNode(this)); private ItemHandlerBase patterns = new ItemHandlerBase(2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.PATTERN)) { - @Nonnull @Override - public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { - return slot == 0 ? super.insertItem(slot, stack, simulate) : stack; + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + if (slot == 1 && !processingPattern && !getStackInSlot(slot).isEmpty()) { + for (int i = 0; i < 9; ++i) { + matrix.setInventorySlotContents(i, StackUtils.nullToEmpty(ItemPattern.getSlot(getStackInSlot(slot), i))); + } + } + } + + @Override + public int getSlotLimit(int slot) { + return slot == 1 ? 1 : super.getSlotLimit(slot); } }; private List filters = new ArrayList<>(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java index 1e9c0c1b0..c92e7ffaf 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java @@ -61,7 +61,7 @@ public class ContainerGrid extends ContainerBase { if (grid.getType() == GridType.PATTERN) { addSlotToContainer(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 0, 172, headerAndSlots + 4)); - addSlotToContainer(new SlotOutput(((NetworkNodeGrid) grid).getPatterns(), 1, 172, headerAndSlots + 40)); + addSlotToContainer(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 1, 172, headerAndSlots + 40)); } if (grid instanceof IPortableGrid) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java index f8487bd59..a38eae241 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java @@ -88,6 +88,7 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider { pattern.getTagCompound().setTag(String.format(NBT_SLOT, slot), stack.serializeNBT()); } + @Nullable public static ItemStack getSlot(ItemStack pattern, int slot) { String id = String.format(NBT_SLOT, slot);