Update crafting monitors on change
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user