diff --git a/src/main/java/li/cil/oc/common/asm/template/StaticSimpleEnvironment.java b/src/main/java/li/cil/oc/common/asm/template/StaticSimpleEnvironment.java index 5a56d0e541..751d632e7b 100644 --- a/src/main/java/li/cil/oc/common/asm/template/StaticSimpleEnvironment.java +++ b/src/main/java/li/cil/oc/common/asm/template/StaticSimpleEnvironment.java @@ -20,7 +20,7 @@ public final class StaticSimpleEnvironment { private StaticSimpleEnvironment() {} - private static final Map nodes = new HashMap(); + private static final Map nodes = new HashMap<>(); public static Node node(final SimpleComponentImpl self) { // Save ourselves the lookup time in the hash map and avoid mixing in @@ -86,4 +86,8 @@ public static void writeToNBT(final SimpleComponentImpl self, NBTTagCompound nbt nbt.setTag("oc:node", nodeNbt); } } + + public static void onServerStopped() { + nodes.clear(); + } } diff --git a/src/main/java/li/cil/oc/util/SideTracker.java b/src/main/java/li/cil/oc/util/SideTracker.java index 11c9baf8c4..83f1b05482 100644 --- a/src/main/java/li/cil/oc/util/SideTracker.java +++ b/src/main/java/li/cil/oc/util/SideTracker.java @@ -1,23 +1,14 @@ package li.cil.oc.util; import cpw.mods.fml.common.FMLCommonHandler; -import java.util.Collections; -import java.util.Set; public final class SideTracker { - private static final Set serverThreads = - Collections.newSetFromMap(new java.util.WeakHashMap()); - public static void addServerThread() { - serverThreads.add(Thread.currentThread()); - } + public static boolean isServer() { + return FMLCommonHandler.instance().getEffectiveSide().isServer(); + } - public static boolean isServer() { - return FMLCommonHandler.instance().getEffectiveSide().isServer() - || serverThreads.contains(Thread.currentThread()); - } - - public static boolean isClient() { - return !isServer(); - } + public static boolean isClient() { + return !isServer(); + } } diff --git a/src/main/scala/li/cil/oc/OpenComputers.scala b/src/main/scala/li/cil/oc/OpenComputers.scala index 42dcfcf971..0410d72fc5 100644 --- a/src/main/scala/li/cil/oc/OpenComputers.scala +++ b/src/main/scala/li/cil/oc/OpenComputers.scala @@ -8,6 +8,7 @@ import cpw.mods.fml.common.event._ import cpw.mods.fml.common.network.FMLEventChannel import li.cil.oc.common.IMC import li.cil.oc.common.Proxy +import li.cil.oc.common.asm.template.StaticSimpleEnvironment import li.cil.oc.server.command.CommandHandler import li.cil.oc.util.ThreadPoolFactory import org.apache.logging.log4j.LogManager @@ -91,6 +92,7 @@ object OpenComputers { @EventHandler def serverStop(e: FMLServerStoppedEvent): Unit = { ThreadPoolFactory.safePools.foreach(_.waitForCompletion()) + StaticSimpleEnvironment.onServerStopped() } @EventHandler