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); + } } }