aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/TecTech.java1
-rw-r--r--src/main/java/com/github/technus/tectech/TecTechEventHandlers.java24
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/tesla/ITeslaConnectable.java14
-rw-r--r--src/main/java/com/github/technus/tectech/mechanics/tesla/TeslaCoverConnection.java4
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;