diff options
Diffstat (limited to 'src')
4 files changed, 41 insertions, 2 deletions
diff --git a/src/main/java/com/github/technus/tectech/TecTech.java b/src/main/java/com/github/technus/tectech/TecTech.java index 593f5f9627..c8946ec80d 100644 --- a/src/main/java/com/github/technus/tectech/TecTech.java +++ b/src/main/java/com/github/technus/tectech/TecTech.java @@ -87,6 +87,7 @@ public class TecTech { .bus() .register(enderWorldSavedData); MinecraftForge.EVENT_BUS.register(enderWorldSavedData); + TecTechEventHandlers.init(); TecTechRecipeMaps.init(); MainLoader.preLoad(); diff --git a/src/main/java/com/github/technus/tectech/TecTechEventHandlers.java b/src/main/java/com/github/technus/tectech/TecTechEventHandlers.java new file mode 100644 index 0000000000..3f7e602cce --- /dev/null +++ b/src/main/java/com/github/technus/tectech/TecTechEventHandlers.java @@ -0,0 +1,24 @@ +package com.github.technus.tectech; + +import com.github.technus.tectech.mechanics.tesla.ITeslaConnectable.TeslaUtil; + +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent; + +public class TecTechEventHandlers { + + public static void init() { + FMLCommonHandler.instance() + .bus() + .register(new TecTechEventHandlers()); + } + + @SubscribeEvent + public void onServerTickEnd(ServerTickEvent event) { + if (event.phase == Phase.END) { + TeslaUtil.housekeep(); + } + } +} diff --git a/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java index cabacc075b..176c2f590e 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java +++ b/src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java @@ -2,7 +2,9 @@ package com.github.technus.tectech.mechanics.tesla; import static java.lang.Math.sqrt; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Map; import com.github.technus.tectech.mechanics.spark.ThaumSpark; @@ -41,6 +43,7 @@ public interface ITeslaConnectable extends ITeslaConnectableSimple { private static final HashSet<ITeslaConnectableSimple> teslaSimpleNodeSet = new HashSet<>(); // Targets for power // transmission private static final HashSet<ITeslaConnectable> teslaNodeSet = new HashSet<>(); // Sources of power transmission + private static final List<ITeslaConnectableSimple> scheduledRemove = new ArrayList<>(); public static void teslaSimpleNodeSetAdd(ITeslaConnectableSimple target) { if (!teslaSimpleNodeSet.contains(target)) { @@ -55,6 +58,17 @@ public interface ITeslaConnectable extends ITeslaConnectableSimple { teslaNodeSet.forEach(origin -> removeTargetFromTeslaOrigin(target, origin)); } + public static void teslaSimpleNodeSetRemoveScheduled(ITeslaConnectableSimple target) { + scheduledRemove.add(target); + } + + public static void housekeep() { + for (ITeslaConnectableSimple e : scheduledRemove) { + teslaSimpleNodeSet.remove(e); + } + scheduledRemove.clear(); + } + private static void addTargetToTeslaOrigin(ITeslaConnectableSimple target, ITeslaConnectable origin) { if (origin.equals(target) || !origin.getTeslaDimension() .equals(target.getTeslaDimension())) { diff --git a/src/main/java/com/github/technus/tectech/mechanics/tesla/TeslaCoverConnection.java b/src/main/java/com/github/technus/tectech/mechanics/tesla/TeslaCoverConnection.java index 95a0fdb3f6..87ef740be9 100644 --- a/src/main/java/com/github/technus/tectech/mechanics/tesla/TeslaCoverConnection.java +++ b/src/main/java/com/github/technus/tectech/mechanics/tesla/TeslaCoverConnection.java @@ -1,6 +1,6 @@ package com.github.technus.tectech.mechanics.tesla; -import static com.github.technus.tectech.mechanics.tesla.ITeslaConnectable.TeslaUtil.teslaSimpleNodeSetRemove; +import static com.github.technus.tectech.mechanics.tesla.ITeslaConnectable.TeslaUtil.teslaSimpleNodeSetRemoveScheduled; import net.minecraftforge.common.util.ForgeDirection; @@ -60,7 +60,7 @@ public class TeslaCoverConnection implements ITeslaConnectableSimple { if (!IGT.isDead()) { output = IGT.injectEnergyUnits(ForgeDirection.UP, teslaVoltageInjected, 1L) > 0L; } else { - teslaSimpleNodeSetRemove(this); + teslaSimpleNodeSetRemoveScheduled(this); } return output; |