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