diff options
Diffstat (limited to 'src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java')
-rw-r--r-- | src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java b/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java index 79990c6959..43db642248 100644 --- a/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java +++ b/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java @@ -1,9 +1,12 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.util.BlockCoord; +import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent; +import crazypants.enderio.conduit.ConduitNetworkTickHandler; +import crazypants.enderio.conduit.ConduitNetworkTickHandler.TickListener; import crazypants.enderio.conduit.ConnectionMode; import crazypants.enderio.conduit.IConduit; import crazypants.enderio.conduit.IConduitBundle; +import crazypants.util.BlockCoord; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -23,12 +26,19 @@ public class GasConduitNetwork private int ticksActiveUnsynced; private boolean lastSyncedActive = false; private int lastSyncedVolume = -1; + private long timeAtLastApply; + private final InnerTickHandler tickHandler = new InnerTickHandler(null); public GasConduitNetwork() { super(GasConduit.class); } + public Class<IGasConduit> getBaseConduitType() + { + return IGasConduit.class; + } + public void addConduit(GasConduit con) { this.tank.setCapacity(this.tank.getMaxGas() + 1000); @@ -87,7 +97,24 @@ public class GasConduitNetwork } } - public void doNetworkTick() + public void onUpdateEntity(IConduit conduit) + { + World world = conduit.getBundle().getEntity().getWorldObj(); + if (world == null) { + return; + } + if (world.isRemote) { + return; + } + long curTime = world.getTotalWorldTime(); + if ((curTime > 0L) && (curTime != this.timeAtLastApply)) + { + this.timeAtLastApply = curTime; + ConduitNetworkTickHandler.instance.addListener(this.tickHandler); + } + } + + private void doTick() { if ((this.gasType == null) || (this.outputs.isEmpty()) || (!this.tank.containsValidGas()) || (this.tank.isEmpty())) { @@ -277,4 +304,17 @@ public class GasConduitNetwork setConduitVolumes(); this.lastSyncedVolume = this.tank.getStored(); } + + private class InnerTickHandler + implements ConduitNetworkTickHandler.TickListener + { + private InnerTickHandler() {} + + public void tickStart(TickEvent.ServerTickEvent evt) {} + + public void tickEnd(TickEvent.ServerTickEvent evt) + { + GasConduitNetwork.this.doTick(); + } + } } |