From fb19aa2983930169f8ffdab1db4dae7fe2f08ad7 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 30 Jun 2018 17:15:18 +0200 Subject: [PATCH] Let processing tasks insert immediately to avoid conflicts. --- .../task/extractor/CraftingExtractor.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/extractor/CraftingExtractor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/extractor/CraftingExtractor.java index 4d8599922..8076095d3 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/extractor/CraftingExtractor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/extractor/CraftingExtractor.java @@ -107,6 +107,8 @@ public class CraftingExtractor { } public void extractOne(@Nullable IItemHandler processingInventory) { + boolean changed = false; + for (int i = 0; i < items.size(); ++i) { if (status.get(i) == CraftingExtractorItemStatus.AVAILABLE) { ItemStack extracted = network.extractItem(items.get(i), items.get(i).getCount(), CraftingTask.getFlags(items.get(i)), false); @@ -116,7 +118,7 @@ public class CraftingExtractor { if (processing) { if (processingInventory == null) { - throw new IllegalStateException("Processing inventory is suddenly null"); + throw new IllegalStateException("Processing inventory is null"); } ItemStack remainder = ItemHandlerHelper.insertItem(processingInventory, extracted, false); @@ -127,11 +129,18 @@ public class CraftingExtractor { status.set(i, CraftingExtractorItemStatus.EXTRACTED); - network.getCraftingManager().onTaskChanged(); + changed = true; - return; + // For processing patterns we want to insert all items at once to avoid conflicts with other crafting steps. + if (!processing) { + return; + } } } + + if (changed) { + network.getCraftingManager().onTaskChanged(); + } } public NBTTagList writeToNbt() {