diff --git a/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/ICraftingPatternContainer.java b/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/ICraftingPatternContainer.java index 2ebffa2ed..bdbd8462c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/ICraftingPatternContainer.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/autocrafting/ICraftingPatternContainer.java @@ -114,6 +114,11 @@ public interface ICraftingPatternContainer { return false; } + /** + * Unlock the container so it may be used by processing pattern + */ + void unlock(); + /** * Called when this container is used by a processing pattern to insert items or fluids in the connected inventory. */ diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/CraftingTask.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/CraftingTask.java index a8961dd93..0b8737875 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/CraftingTask.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/autocrafting/task/v6/CraftingTask.java @@ -969,6 +969,11 @@ public class CraftingTask implements ICraftingTask { @Override public void onCancelled() { + crafts.values().forEach(c -> { + if (c instanceof Processing) { + network.getCraftingManager().getAllContainer(c.getPattern()).forEach(ICraftingPatternContainer::unlock); + } + }); for (ItemStack remainder : internalStorage.getStacks()) { network.insertItem(remainder, remainder.getCount(), Action.PERFORM); } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java index 336f17bb3..7b8acfa18 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/node/CrafterNetworkNode.java @@ -429,6 +429,11 @@ public class CrafterNetworkNode extends NetworkNode implements ICraftingPatternC } } + @Override + public void unlock() { + locked = false; + } + @Override public void onUsedForProcessing() { Optional root = getRootContainerNotSelf();