From 82a0a364e7a0424952db212121466df45946b770 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Tue, 25 Oct 2016 19:48:40 +0200 Subject: [PATCH] Don't start task with missing items --- .../refinedstorage/api/autocrafting/task/ICraftingTask.java | 5 +++++ .../refinedstorage/api/network/INetworkMaster.java | 5 +++-- .../apiimpl/autocrafting/task/CraftingTask.java | 5 +++++ .../apiimpl/network/grid/ItemGridHandler.java | 6 +++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java index 19364d9c3..cbb744b46 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java @@ -106,6 +106,11 @@ public interface ICraftingTask { */ boolean isValid(); + /** + * @return whether this crafting task has missing items + */ + boolean hasMissing(); + /** * {@link ICraftingTask#calculate()} must be run before this! * diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java index 94bfcaa8c..7739d34bc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java @@ -185,8 +185,9 @@ public interface INetworkMaster { task.calculate(); - // @TODO: Only schedule when there are no items missing? - addCraftingTask(task); + if (!task.hasMissing()) { + addCraftingTask(task); + } } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java index 2dacda389..81d91f213 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java @@ -474,6 +474,11 @@ public class CraftingTask implements ICraftingTask { return !recurseFound; } + @Override + public boolean hasMissing() { + return !missing.isEmpty(); + } + @Override public List getPreviewStacks() { if (!isValid()) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java index f09850aa8..5713d3aba 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java @@ -145,8 +145,12 @@ public class ItemGridHandler implements IItemGridHandler { if (stack != null) { ICraftingTask task = new CraftingTask(network, stack, network.getPattern(stack), quantity); + task.calculate(); - network.addCraftingTask(task); + + if (!task.hasMissing()) { + network.addCraftingTask(task); + } } }