diff --git a/src/main/java/refinedstorage/api/network/INetworkMaster.java b/src/main/java/refinedstorage/api/network/INetworkMaster.java index 8297b4699..aa1bce7cd 100755 --- a/src/main/java/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/refinedstorage/api/network/INetworkMaster.java @@ -222,6 +222,11 @@ public interface INetworkMaster { */ void sendFluidStorageDeltaToClient(FluidStack stack, int delta); + /** + * Sends a crafting monitor update to all players that are watching a crafting monitor. + */ + void sendCraftingMonitorUpdate(); + /** * Inserts an item in this network. * diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 896a48e51..49a2a5153 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -197,6 +197,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private boolean couldRun; + private boolean craftingMonitorUpdateRequested; + private EnumControllerType type; private RedstoneMode redstoneMode = RedstoneMode.IGNORE; @@ -294,10 +296,22 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } } - if (!craftingTasks.isEmpty() || craftingTasksChanged) { - markDirty(); + if (craftingTasksChanged) { + craftingMonitorUpdateRequested = true; + } - updateCraftingMonitors(); + if (!craftingTasks.isEmpty()) { + markDirty(); + } + + if (craftingMonitorUpdateRequested) { + craftingMonitorUpdateRequested = false; + + for (INetworkNode node : nodeGraph.all()) { + if (node instanceof TileCraftingMonitor) { + ((TileCraftingMonitor) node).dataManager.sendParameterToWatchers(TileCraftingMonitor.ELEMENTS); + } + } } } @@ -331,12 +345,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR super.update(); } - public void updateCraftingMonitors() { - for (INetworkNode node : nodeGraph.all()) { - if (node instanceof TileCraftingMonitor) { - ((TileCraftingMonitor) node).dataManager.sendParameterToWatchers(TileCraftingMonitor.ELEMENTS); - } - } + @Override + public void sendCraftingMonitorUpdate() { + craftingMonitorUpdateRequested = true; } @Override