From 14bdba937d861cba4c885c74cecebaf8b7b0fc4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 8 Oct 2013 19:37:28 +0200 Subject: [PATCH] fixed gui breaking pure servers --- li/cil/oc/OpenComputers.scala | 2 +- li/cil/oc/client/GuiHandler.scala | 17 +++++++++++++++++ li/cil/oc/client/Proxy.scala | 4 ++++ li/cil/oc/common/GuiHandler.scala | 18 +----------------- li/cil/oc/common/GuiType.scala | 6 ++++++ li/cil/oc/common/Proxy.scala | 3 --- li/cil/oc/server/GuiHandler.scala | 9 +++++++++ li/cil/oc/server/Proxy.scala | 14 ++++++++++++++ 8 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 li/cil/oc/client/GuiHandler.scala create mode 100644 li/cil/oc/common/GuiType.scala create mode 100644 li/cil/oc/server/GuiHandler.scala create mode 100644 li/cil/oc/server/Proxy.scala diff --git a/li/cil/oc/OpenComputers.scala b/li/cil/oc/OpenComputers.scala index e0d6582d3..14bcfb5b9 100644 --- a/li/cil/oc/OpenComputers.scala +++ b/li/cil/oc/OpenComputers.scala @@ -29,7 +29,7 @@ object OpenComputers { // http://docs.scala-lang.org/overviews/reflection/thread-safety.html val mirror = ru.runtimeMirror(OpenComputers.getClass.getClassLoader) - @SidedProxy(clientSide = "li.cil.oc.client.Proxy", serverSide = "li.cil.oc.common.Proxy") + @SidedProxy(clientSide = "li.cil.oc.client.Proxy", serverSide = "li.cil.oc.server.Proxy") var proxy: Proxy = null @EventHandler diff --git a/li/cil/oc/client/GuiHandler.scala b/li/cil/oc/client/GuiHandler.scala new file mode 100644 index 000000000..56af8381c --- /dev/null +++ b/li/cil/oc/client/GuiHandler.scala @@ -0,0 +1,17 @@ +package li.cil.oc.client + +import li.cil.oc.common.tileentity.{Screen, Computer} +import li.cil.oc.common.{GuiHandler => CommonGuiHandler, GuiType} +import net.minecraft.entity.player.EntityPlayer +import net.minecraft.world.World + +object GuiHandler extends CommonGuiHandler { + override def getClientGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int) = + world.getBlockTileEntity(x, y, z) match { + case tileEntity: Computer if id == GuiType.Computer.id => + new gui.Computer(player.inventory, tileEntity) + case tileEntity: Screen if id == GuiType.Screen.id => + new gui.Screen(tileEntity) + case _ => null + } +} diff --git a/li/cil/oc/client/Proxy.scala b/li/cil/oc/client/Proxy.scala index 0023b0c1f..922444393 100644 --- a/li/cil/oc/client/Proxy.scala +++ b/li/cil/oc/client/Proxy.scala @@ -2,8 +2,10 @@ package li.cil.oc.client import cpw.mods.fml.client.registry.ClientRegistry import cpw.mods.fml.common.event.FMLInitializationEvent +import cpw.mods.fml.common.network.NetworkRegistry import cpw.mods.fml.common.registry.TickRegistry import cpw.mods.fml.relauncher.Side +import li.cil.oc.OpenComputers import li.cil.oc.common.tileentity.Computer import li.cil.oc.common.tileentity.Screen import li.cil.oc.common.{Proxy => CommonProxy} @@ -12,6 +14,8 @@ private[oc] class Proxy extends CommonProxy { override def init(e: FMLInitializationEvent) = { super.init(e) + NetworkRegistry.instance.registerGuiHandler(OpenComputers, GuiHandler) + ClientRegistry.bindTileEntitySpecialRenderer(classOf[Screen], ScreenRenderer) ClientRegistry.bindTileEntitySpecialRenderer(classOf[Computer], ComputerRenderer) diff --git a/li/cil/oc/common/GuiHandler.scala b/li/cil/oc/common/GuiHandler.scala index 152eee71a..9b1fc0549 100644 --- a/li/cil/oc/common/GuiHandler.scala +++ b/li/cil/oc/common/GuiHandler.scala @@ -1,31 +1,15 @@ package li.cil.oc.common import cpw.mods.fml.common.network.IGuiHandler -import li.cil.oc.client.gui import li.cil.oc.common.tileentity.Computer -import li.cil.oc.common.tileentity.Screen import net.minecraft.entity.player.EntityPlayer import net.minecraft.world.World -object GuiType extends Enumeration { - val Computer = Value("Computer") - val Screen = Value("Screen") -} - -object GuiHandler extends IGuiHandler { +abstract class GuiHandler extends IGuiHandler { override def getServerGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int) = world.getBlockTileEntity(x, y, z) match { case tileEntity: Computer => new container.Computer(player.inventory, tileEntity) case _ => null } - - override def getClientGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int) = - world.getBlockTileEntity(x, y, z) match { - case tileEntity: Computer if id == GuiType.Computer.id => - new gui.Computer(player.inventory, tileEntity) - case tileEntity: Screen if id == GuiType.Screen.id => - new gui.Screen(tileEntity) - case _ => null - } } \ No newline at end of file diff --git a/li/cil/oc/common/GuiType.scala b/li/cil/oc/common/GuiType.scala new file mode 100644 index 000000000..b9463d5b3 --- /dev/null +++ b/li/cil/oc/common/GuiType.scala @@ -0,0 +1,6 @@ +package li.cil.oc.common + +object GuiType extends Enumeration { + val Computer = Value("Computer") + val Screen = Value("Screen") +} diff --git a/li/cil/oc/common/Proxy.scala b/li/cil/oc/common/Proxy.scala index 4d40a0bb3..1bc147e4b 100644 --- a/li/cil/oc/common/Proxy.scala +++ b/li/cil/oc/common/Proxy.scala @@ -1,7 +1,6 @@ package li.cil.oc.common import cpw.mods.fml.common.event._ -import cpw.mods.fml.common.network.NetworkRegistry import cpw.mods.fml.common.registry.LanguageRegistry import li.cil.oc._ import li.cil.oc.server.component.Computer @@ -29,8 +28,6 @@ class Proxy { Blocks.init() Items.init() - NetworkRegistry.instance.registerGuiHandler(OpenComputers, GuiHandler) - api.Driver.add(driver.FileSystem) api.Driver.add(driver.GraphicsCard) api.Driver.add(driver.Keyboard) diff --git a/li/cil/oc/server/GuiHandler.scala b/li/cil/oc/server/GuiHandler.scala new file mode 100644 index 000000000..e504415be --- /dev/null +++ b/li/cil/oc/server/GuiHandler.scala @@ -0,0 +1,9 @@ +package li.cil.oc.server + +import li.cil.oc.common.{GuiHandler => CommonGuiHandler} +import net.minecraft.entity.player.EntityPlayer +import net.minecraft.world.World + +object GuiHandler extends CommonGuiHandler { + override def getClientGuiElement(id: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int) = null +} diff --git a/li/cil/oc/server/Proxy.scala b/li/cil/oc/server/Proxy.scala new file mode 100644 index 000000000..2b9e54bd7 --- /dev/null +++ b/li/cil/oc/server/Proxy.scala @@ -0,0 +1,14 @@ +package li.cil.oc.server + +import cpw.mods.fml.common.event.FMLInitializationEvent +import cpw.mods.fml.common.network.NetworkRegistry +import li.cil.oc.OpenComputers +import li.cil.oc.common.{Proxy => CommonProxy} + +private[oc] class Proxy extends CommonProxy { + override def init(e: FMLInitializationEvent) = { + super.init(e) + + NetworkRegistry.instance.registerGuiHandler(OpenComputers, GuiHandler) + } +}