From 74ae66d247e9e2972fed76c8cde986727aeba78c Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Tue, 28 Nov 2017 13:44:48 +0100 Subject: [PATCH] Fixed pattern stack copying --- .../api/autocrafting/ICraftingPatternProvider.java | 2 +- .../apiimpl/network/node/NetworkNodeCrafter.java | 3 +-- .../java/com/raoulvdberge/refinedstorage/item/ItemPattern.java | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternProvider.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternProvider.java index b30c48f69..852af9c2f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternProvider.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternProvider.java @@ -14,7 +14,7 @@ public interface ICraftingPatternProvider { * Creates a crafting pattern. * * @param world the world - * @param stack the pattern stack + * @param stack the pattern stack, the implementor needs to copy it * @param container the {@link ICraftingPatternContainer} where the pattern is in * @return the crafting pattern */ diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index 1596592a9..1901e89d1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -63,8 +63,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC ItemStack patternStack = patterns.getStackInSlot(i); if (!patternStack.isEmpty()) { - // We copy the pattern stack because if we remove it from the inventory, the crafting task will use a pattern with an invalid stack... - ICraftingPattern pattern = ((ICraftingPatternProvider) patternStack.getItem()).create(world, patternStack.copy(), this); + ICraftingPattern pattern = ((ICraftingPatternProvider) patternStack.getItem()).create(world, patternStack, this); if (pattern.isValid()) { actualPatterns.add(pattern); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java index a38eae241..e2cf07314 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java @@ -202,6 +202,7 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider { @Override @Nonnull public ICraftingPattern create(World world, ItemStack stack, ICraftingPatternContainer container) { - return new CraftingPattern(world, container, stack); + // We copy the pattern stack because if we remove it from the inventory, the crafting task will use a pattern with an invalid stack... + return new CraftingPattern(world, container, stack.copy()); } }