Fix recursive issues

This commit is contained in:
Raoul Van den Berge
2016-09-11 18:54:06 +02:00
parent dce0ee7ea8
commit 10b52f3022

View File

@@ -168,10 +168,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
return (left.getPriority() > right.getPriority()) ? -1 : 1; return (left.getPriority() > right.getPriority()) ? -1 : 1;
}; };
private ItemGridHandler itemGridHandler = new ItemGridHandler(this); private IItemGridHandler itemGridHandler = new ItemGridHandler(this);
private FluidGridHandler fluidGridHandler = new FluidGridHandler(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); private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this);
@@ -183,7 +183,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private List<ICraftingTask> craftingTasks = new ArrayList<>(); private List<ICraftingTask> craftingTasks = new ArrayList<>();
private List<ICraftingTask> craftingTasksToAdd = new ArrayList<>(); private List<ICraftingTask> craftingTasksToAdd = new ArrayList<>();
private List<ICraftingTask> craftingTasksToCancel = new ArrayList<>(); private List<ICraftingTask> craftingTasksToCancel = new ArrayList<>();
private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>(); private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>();
private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity); private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity);
@@ -284,18 +283,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
while (craftingTaskIterator.hasNext()) { while (craftingTaskIterator.hasNext()) {
ICraftingTask task = craftingTaskIterator.next(); ICraftingTask task = craftingTaskIterator.next();
if (task.getChild() != null) { if (updateCraftingTask(task)) {
if (updateCraftingTask(task.getChild())) { craftingTaskIterator.remove();
task.setChild(null);
craftingTasksChanged = true; craftingTasksChanged = true;
}
} else {
if (updateCraftingTask(task)) {
craftingTaskIterator.remove();
craftingTasksChanged = true;
}
} }
} }
@@ -335,6 +326,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
} }
private boolean updateCraftingTask(ICraftingTask task) { private boolean updateCraftingTask(ICraftingTask task) {
if (task.getChild() != null) {
if (updateCraftingTask(task.getChild())) {
task.setChild(null);
}
return false;
}
ICraftingPatternContainer container = task.getPattern().getContainer(); ICraftingPatternContainer container = task.getPattern().getContainer();
return container != null && ticks % container.getSpeed() == 0 && task.update(worldObj, this); return container != null && ticks % container.getSpeed() == 0 && task.update(worldObj, this);