Fixed remote terminals potentially breaking when relogging into a single player world.

This commit is contained in:
Florian Nücke 2014-06-11 17:43:35 +02:00
parent 41b4321b99
commit 149ade42ff
3 changed files with 14 additions and 3 deletions

View File

@ -40,7 +40,7 @@ object GuiHandler extends CommonGuiHandler {
val address = stack.getTagCompound.getString(Settings.namespace + "server")
val key = stack.getTagCompound.getString(Settings.namespace + "key")
if (key != null && !key.isEmpty && address != null && !address.isEmpty) {
tileentity.Rack.list.
tileentity.Rack.list.keys.
flatMap(_.terminals).
find(term => term.rack.isPresent(term.number) match {
case Some(value) => value == address

View File

@ -11,6 +11,7 @@ import li.cil.oc.client.renderer.tileentity._
import li.cil.oc.client.renderer.{TextBufferRenderCache, WirelessNetworkDebugRenderer}
import li.cil.oc.common.{Proxy => CommonProxy, tileentity}
import li.cil.oc.common.component.TextBuffer
import li.cil.oc.common.tileentity.Rack
import li.cil.oc.{Items, OpenComputers}
import net.minecraft.client.Minecraft
import net.minecraft.client.resources.ReloadableResourceManager
@ -65,6 +66,7 @@ private[oc] class Proxy extends CommonProxy {
TickRegistry.registerTickHandler(HologramRenderer, Side.CLIENT)
TickRegistry.registerTickHandler(TextBufferRenderCache, Side.CLIENT)
MinecraftForge.EVENT_BUS.register(WirelessNetworkDebugRenderer)
MinecraftForge.EVENT_BUS.register(Rack)
MinecraftForge.EVENT_BUS.register(TextBuffer)
}
}

View File

@ -18,6 +18,8 @@ import net.minecraft.util.ChatMessageComponent
import net.minecraftforge.common.ForgeDirection
import stargatetech2.api.bus.IBusDevice
import scala.collection.mutable
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.event.ForgeSubscribe
// See AbstractBusAware as to why we have to define the IBusDevice here.
@Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2")
@ -230,7 +232,7 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
override protected def initialize() {
super.initialize()
Rack.list += this
Rack.list += this -> Unit
}
override protected def dispose() {
@ -387,5 +389,12 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
}
object Rack {
val list = mutable.Set.empty[Rack]
val list = mutable.WeakHashMap.empty[Rack, Unit]
@ForgeSubscribe
def onWorldUnload(e: WorldEvent.Unload) {
if (e.world.isRemote) {
list.clear()
}
}
}