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 = "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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user