From 10b52f302287ad7bdeccb386ed557db75d042bc7 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 11 Sep 2016 18:54:06 +0200 Subject: [PATCH] Fix recursive issues --- .../refinedstorage/tile/TileController.java | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index d930ebafd..fcc1c8f27 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -168,10 +168,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR return (left.getPriority() > right.getPriority()) ? -1 : 1; }; - private ItemGridHandler itemGridHandler = new ItemGridHandler(this); - private FluidGridHandler fluidGridHandler = new FluidGridHandler(this); + private IItemGridHandler itemGridHandler = new ItemGridHandler(this); + private IFluidGridHandler fluidGridHandler = new FluidGridHandler(this); - private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this); + private IWirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this); private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this); @@ -183,7 +183,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private List craftingTasks = new ArrayList<>(); private List craftingTasksToAdd = new ArrayList<>(); private List craftingTasksToCancel = new ArrayList<>(); - private List craftingTasksToRead = new ArrayList<>(); private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity); @@ -284,18 +283,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR while (craftingTaskIterator.hasNext()) { ICraftingTask task = craftingTaskIterator.next(); - if (task.getChild() != null) { - if (updateCraftingTask(task.getChild())) { - task.setChild(null); + if (updateCraftingTask(task)) { + craftingTaskIterator.remove(); - craftingTasksChanged = true; - } - } else { - if (updateCraftingTask(task)) { - craftingTaskIterator.remove(); - - craftingTasksChanged = true; - } + craftingTasksChanged = true; } } @@ -335,6 +326,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } private boolean updateCraftingTask(ICraftingTask task) { + if (task.getChild() != null) { + if (updateCraftingTask(task.getChild())) { + task.setChild(null); + } + + return false; + } + ICraftingPatternContainer container = task.getPattern().getContainer(); return container != null && ticks % container.getSpeed() == 0 && task.update(worldObj, this);