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 22f44d40b..2fadac747 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 @@ -4,6 +4,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer; import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement; import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElement; +import com.raoulvdberge.refinedstorage.api.util.IItemStackList; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -45,11 +46,6 @@ public interface ICraftingTask { */ void reschedule(); - /** - * Clear out missing items. Tasks will run all possible tasks, before reporting missing items again. - */ - void clearMissing(); - /** * @return the amount of items that have to be crafted */ @@ -108,18 +104,17 @@ public interface ICraftingTask { List getSteps(); /** - * Used to check if the crafting task has recursive elements - * (eg. block needs 9 ingots, ingots are crafted by a block) - * {@link ICraftingTask#calculate()} must be run before this + * Used to check if the crafting task has recursive elements (eg. block needs 9 ingots, ingots are crafted by a block) + * {@link ICraftingTask#calculate()} must be run before this! * * @return true if no recursion was found */ boolean isValid(); /** - * @return whether this crafting task has missing items + * @return the missing items */ - boolean hasMissing(); + IItemStackList getMissing(); /** * {@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 ad064df1e..ae997076b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/network/INetworkMaster.java @@ -184,7 +184,8 @@ public interface INetworkMaster { ICraftingTask task = createCraftingTask(stack, pattern, 1); task.calculate(); - task.clearMissing(); + task.getMissing().clear(); + addCraftingTask(task); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/storage/fluid/IFluidStorageCache.java b/src/main/java/com/raoulvdberge/refinedstorage/api/storage/fluid/IFluidStorageCache.java index 84aaa3d19..458c3499f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/storage/fluid/IFluidStorageCache.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/storage/fluid/IFluidStorageCache.java @@ -11,7 +11,7 @@ import java.util.List; * This holds all fluids from all the connected storages from a {@link INetworkMaster}. *

* Refined Storage uses this class mainly for use in Grids and Detectors to avoid querying - * individual {@link IFluidStorage} constantly (performance impact) and to send and detect storage changes + * individual {@link IFluidStorage}s constantly (performance impact) and to send and detect storage changes * more efficiently. */ public interface IFluidStorageCache { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/storage/item/IItemStorageCache.java b/src/main/java/com/raoulvdberge/refinedstorage/api/storage/item/IItemStorageCache.java index 0eac63f2d..90eaf23ec 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/storage/item/IItemStorageCache.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/storage/item/IItemStorageCache.java @@ -11,7 +11,7 @@ import java.util.List; * This holds all items from all the connected storages from a {@link INetworkMaster}. *

* Refined Storage uses this class mainly for use in Grids and Detectors to avoid querying - * individual {@link IItemStorage} constantly (performance impact) and to send and detect storage changes + * individual {@link IItemStorage}s constantly (performance impact) and to send and detect storage changes * more efficiently. */ public interface IItemStorageCache { @@ -45,7 +45,7 @@ public interface IItemStorageCache { void remove(@Nonnull ItemStack stack); /** - * @return the list behind this cope + * @return the list behind this cache */ IItemStackList getList(); 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 6e20a74fb..884f5883c 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 @@ -263,7 +263,7 @@ public class CraftingTask implements ICraftingTask { public boolean update(Map usedContainers) { IItemStackList oreDictPrepped = network.getItemStorageCache().getList().prepOreDict(); - if (hasMissing()) { + if (!missing.isEmpty()) { for (ItemStack missing : this.missing.getStacks()) { if (!oreDictPrepped.trackedRemove(missing, true)) { oreDictPrepped.undo(); @@ -346,11 +346,6 @@ public class CraftingTask implements ICraftingTask { } } - @Override - public void clearMissing() { - missing.clear(); - } - @Override public int getQuantity() { return quantity; @@ -521,8 +516,8 @@ public class CraftingTask implements ICraftingTask { } @Override - public boolean hasMissing() { - return !missing.isEmpty(); + public IItemStackList getMissing() { + return missing; } @Override 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 9f9397328..044698bc3 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,10 @@ public class ItemGridHandler implements IItemGridHandler { if (stack != null) { ICraftingTask task = new CraftingTask(network, stack, network.getPattern(stack), quantity); + task.calculate(); - task.clearMissing(); + task.getMissing().clear(); + network.addCraftingTask(task); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java index bc9f18308..82d91ec13 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileController.java @@ -275,8 +275,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR craftingTaskIterator.remove(); craftingTasksChanged = true; - } else if(task.hasMissing() && ticks % 100 == 0 && Math.random() > 0.5) { - task.clearMissing(); + } else if (!task.getMissing().isEmpty() && ticks % 100 == 0 && Math.random() > 0.5) { + task.getMissing().clear(); } }