Update crafting monitors on change

This commit is contained in:
Raoul Van den Berge
2016-10-01 13:44:04 +02:00
parent c126234f2c
commit 8f6fb1582d

View File

@@ -133,7 +133,6 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
public static final String NBT_ENERGY = "Energy"; public static final String NBT_ENERGY = "Energy";
public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity"; public static final String NBT_ENERGY_CAPACITY = "EnergyCapacity";
private static final String NBT_CRAFTING_TASKS = "CraftingTasks"; private static final String NBT_CRAFTING_TASKS = "CraftingTasks";
private static final Comparator<IItemStorage> ITEM_SIZE_COMPARATOR = (left, right) -> { private static final Comparator<IItemStorage> ITEM_SIZE_COMPARATOR = (left, right) -> {
@@ -275,7 +274,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
craftingTasksToAdd.clear(); craftingTasksToAdd.clear();
updateCraftingTasks(CraftingTaskUpdateType.NORMAL); if (updateCraftingTasks(CraftingTaskUpdateType.NORMAL)) {
craftingTasksChanged = true;
}
if (!craftingTasks.isEmpty() || craftingTasksChanged) { if (!craftingTasks.isEmpty() || craftingTasksChanged) {
markDirty(); markDirty();
@@ -314,12 +315,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
super.update(); super.update();
} }
enum CraftingTaskUpdateType { private enum CraftingTaskUpdateType {
NORMAL, NORMAL,
DELETION DELETION
} }
private void updateCraftingTasks(CraftingTaskUpdateType type) { private boolean updateCraftingTasks(CraftingTaskUpdateType type) {
Iterator<ICraftingTask> craftingTaskIterator = craftingTasks.iterator(); Iterator<ICraftingTask> craftingTaskIterator = craftingTasks.iterator();
while (craftingTaskIterator.hasNext()) { while (craftingTaskIterator.hasNext()) {
@@ -327,8 +328,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (updateCraftingTask(task, type)) { if (updateCraftingTask(task, type)) {
craftingTaskIterator.remove(); craftingTaskIterator.remove();
return true;
} }
} }
return false;
} }
private boolean updateCraftingTask(ICraftingTask task, CraftingTaskUpdateType type) { private boolean updateCraftingTask(ICraftingTask task, CraftingTaskUpdateType type) {
@@ -576,7 +581,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
if (onInserted(stack, task)) { if (onInserted(stack, task)) {
inserted--; inserted--;
updateCraftingTasks(CraftingTaskUpdateType.DELETION); if (updateCraftingTasks(CraftingTaskUpdateType.DELETION)) {
updateCraftingMonitors();
}
} }
} }
} }