diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 5df7d196d..df583ff40 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -154,20 +154,20 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor syncItems(); } + } - craftingTasks.addAll(craftingTasksToAdd); - craftingTasksToAdd.clear(); + craftingTasks.addAll(craftingTasksToAdd); + craftingTasksToAdd.clear(); - Iterator it = craftingTasks.iterator(); + Iterator crIt = craftingTasks.iterator(); - while (it.hasNext()) { - CraftingTask task = it.next(); + while (crIt.hasNext()) { + CraftingTask task = crIt.next(); - if (task.attemptCraft(this)) { - it.remove(); + if (ticks % task.getPattern().getSpeed() == 0 && task.update(this)) { + crIt.remove(); - push(task.getPattern().getResult()); - } + push(task.getPattern().getResult()); } } @@ -185,10 +185,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor wirelessGridConsumers.removeAll(wirelessGridConsumersMarkedForRemoval); wirelessGridConsumersMarkedForRemoval.clear(); - Iterator it = wirelessGridConsumers.iterator(); + Iterator wgIt = wirelessGridConsumers.iterator(); - while (it.hasNext()) { - WirelessGridConsumer consumer = it.next(); + while (wgIt.hasNext()) { + WirelessGridConsumer consumer = wgIt.next(); if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) { consumer.getPlayer().closeScreen(); // This will call onContainerClosed on the Container and remove it from the list @@ -258,7 +258,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor if (crafter.getStackInSlot(i) != null) { ItemStack pattern = crafter.getStackInSlot(i); - patterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20)); + patterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20 - (crafter.getUpgrades() * 4))); } } } diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index 11e30f330..a88257218 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -43,6 +43,18 @@ public class TileCrafter extends TileMachine implements IInventory { InventoryUtils.saveInventory(inventory, 0, nbt); } + public int getUpgrades() { + int upgrades = 0; + + for (int i = PATTERN_SLOTS; i < PATTERN_SLOTS + 4; ++i) { + if (inventory.getStackInSlot(i) != null) { + upgrades++; + } + } + + return upgrades; + } + @Override public int getSizeInventory() { return inventory.getSizeInventory(); diff --git a/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java b/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java index b84ca0dd9..e50f7cdd7 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java +++ b/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java @@ -22,7 +22,7 @@ public class CraftingTask { return pattern; } - public boolean attemptCraft(TileController controller) { + public boolean update(TileController controller) { boolean done = true; for (int i = 0; i < pattern.getIngredients().length; ++i) {