aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java')
-rw-r--r--src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java44
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();
+ }
+ }
}