From c3721c2561f83c110382a63c5bc0343275ff4c05 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 6 Oct 2016 15:13:20 +0200 Subject: [PATCH] Apply speed to running of tasks --- .../CraftingMonitorElementToTake.java | 2 + .../autocrafting/task/CraftingTaskNormal.java | 37 ++++++++++++------- .../refinedstorage/tile/TileController.java | 4 +- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/main/java/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementToTake.java b/src/main/java/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementToTake.java index bd6d49000..d654cf6dd 100755 --- a/src/main/java/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementToTake.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/craftingmonitor/CraftingMonitorElementToTake.java @@ -20,6 +20,8 @@ public class CraftingMonitorElementToTake implements ICraftingMonitorElement { @Override public void draw(GuiBase gui, int x, int y) { + x += 3; + gui.drawItem(x + 2, y + 1, toTake); float scale = 0.5f; diff --git a/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTaskNormal.java b/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTaskNormal.java index 0409ab098..1151404e6 100755 --- a/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTaskNormal.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/task/CraftingTaskNormal.java @@ -15,6 +15,7 @@ import refinedstorage.api.network.NetworkUtils; import refinedstorage.api.storage.CompareUtils; import refinedstorage.api.storage.item.IGroupedItemStorage; import refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementRoot; +import refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementToTake; import java.util.ArrayDeque; import java.util.ArrayList; @@ -153,6 +154,18 @@ public class CraftingTaskNormal implements ICraftingTask { quantity )); + if (!toTake.isEmpty()) { + Multimap toTake = ArrayListMultimap.create(); + + for (ItemStack stack : new ArrayList<>(this.toTake)) { + add(toTake, stack); + } + + for (ItemStack stack : toTake.values()) { + elements.add(new CraftingMonitorElementToTake(stack, stack.stackSize)); + } + } + return elements; } @@ -182,7 +195,15 @@ public class CraftingTaskNormal implements ICraftingTask { } private void addMissing(ItemStack stack) { - for (ItemStack m : missing.get(stack.getItem())) { + add(missing, stack); + } + + private void addToCraft(ItemStack stack) { + add(toCraft, stack); + } + + private void add(Multimap map, ItemStack stack) { + for (ItemStack m : map.get(stack.getItem())) { if (CompareUtils.compareStackNoQuantity(m, stack)) { m.stackSize += stack.stackSize; @@ -190,7 +211,7 @@ public class CraftingTaskNormal implements ICraftingTask { } } - missing.put(stack.getItem(), stack.copy()); + map.put(stack.getItem(), stack.copy()); } private void addExtras(ICraftingPattern pattern) { @@ -226,16 +247,4 @@ public class CraftingTaskNormal implements ICraftingTask { this.extras.remove(extras.getItem(), extras); } } - - private void addToCraft(ItemStack stack) { - for (ItemStack m : toCraft.get(stack.getItem())) { - if (CompareUtils.compareStackNoQuantity(m, stack)) { - m.stackSize += stack.stackSize; - - return; - } - } - - toCraft.put(stack.getItem(), stack.copy()); - } } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 0766fb175..d6e577cf9 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -275,7 +275,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR while (craftingTaskIterator.hasNext()) { ICraftingTask task = craftingTaskIterator.next(); - if (task.update()) { + ICraftingPatternContainer container = task.getPattern().getContainer(); + + if (container != null && ticks % container.getSpeed() == 0 && task.update()) { craftingTaskIterator.remove(); craftingTasksChanged = true;