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 37f5db1ee..ce0820139 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 @@ -75,6 +75,10 @@ public class CraftingTask implements ICraftingTask { this.tookFluids = tookFluids; } + public INetworkMaster getNetwork() { + return network; + } + @Override public void calculate() { IItemStackList networkList = network.getItemStorageCache().getList().copy(); @@ -159,7 +163,7 @@ public class CraftingTask implements ICraftingTask { } if (pattern.isProcessing()) { - toProcess.add(new Processable(pattern)); + toProcess.add(new Processable(this)); } if (missing.isEmpty()) { @@ -212,8 +216,10 @@ public class CraftingTask implements ICraftingTask { toTakeFluids.add(fluidInItem.copy()); } } + return true; } + return false; } @@ -283,6 +289,7 @@ public class CraftingTask implements ICraftingTask { if (ItemHandlerHelper.insertItem(inventory, toInsert, true) == null) { ItemHandlerHelper.insertItem(inventory, toInsert, false); + took.remove(tookStack, toInsert.stackSize, true); network.sendCraftingMonitorUpdate(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/Processable.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/Processable.java index ab3504c87..ea7350f46 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/Processable.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/Processable.java @@ -14,13 +14,15 @@ public class Processable implements IProcessable { private static final String NBT_SATISFIED = "Satisfied_%d"; private static final String NBT_TO_INSERT = "ToInsert"; + private CraftingTask task; private ICraftingPattern pattern; private IItemStackList toInsert = API.instance().createItemStackList(); private boolean satisfied[]; private boolean startedProcessing; - public Processable(ICraftingPattern pattern) { - this.pattern = pattern; + public Processable(CraftingTask task) { + this.task = task; + this.pattern = task.getPattern(); this.satisfied = new boolean[pattern.getOutputs().size()]; for (ItemStack input : pattern.getInputs()) { @@ -58,12 +60,15 @@ public class Processable implements IProcessable { @Override public boolean canStartProcessing(IItemStackList list) { list = list.copy(); // So we can edit the list + for (ItemStack stack : toInsert.getStacks()) { ItemStack actualStack = list.get(stack, IComparer.COMPARE_DAMAGE | IComparer.COMPARE_NBT | (pattern.isOredict() ? IComparer.COMPARE_OREDICT : 0)); + if (actualStack == null || actualStack.stackSize == 0 || !list.remove(actualStack, true)) { return false; } } + return true; } @@ -102,6 +107,8 @@ public class Processable implements IProcessable { if (API.instance().getComparer().isEqualNoQuantity(stack, item)) { satisfied[i] = true; + task.getNetwork().sendCraftingMonitorUpdate(); + return true; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java index 49991043b..a48adc1a1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java @@ -118,10 +118,10 @@ public class GuiCraftingMonitor extends GuiBase { if (item == itemSelected) { itemSelectedX = x; itemSelectedY = y; + } - if (inBounds(itemSelectedX, itemSelectedY, ITEM_WIDTH, ITEM_HEIGHT, mouseX, mouseY)) { - itemSelectedTooltip = element.getTooltip(); - } + if (inBounds(x, y, ITEM_WIDTH, ITEM_HEIGHT, mouseX, mouseY)) { + itemSelectedTooltip = element.getTooltip(); } element.draw(x, y, drawers);