Added method to send crafting monitor update. It's no longer being sent every tick. Crafting tasks need to call this accordingly.

This commit is contained in:
Raoul Van den Berge
2016-10-16 19:35:50 +02:00
parent cd27a40b53
commit d201092416
2 changed files with 25 additions and 9 deletions

View File

@@ -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.
*

View File

@@ -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