From b3813bc4f563a4066fd79db1dad16db3673bb324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Thu, 17 Jul 2014 15:15:26 +0200 Subject: [PATCH] Trying to get rid of `FMLCommonHandler.instance.getEffectiveSide` where possible, since it can apparently fail in some scenarios. --- .../oc/common/asm/SimpleComponentTickHandler.java | 3 +-- src/main/scala/li/cil/oc/Settings.scala | 1 + src/main/scala/li/cil/oc/client/Proxy.scala | 4 ++-- .../cil/oc/client/renderer/block/BlockRenderer.scala | 3 ++- src/main/scala/li/cil/oc/common/EventHandler.scala | 12 ++++++------ .../scala/li/cil/oc/common/block/AccessPoint.scala | 2 +- src/main/scala/li/cil/oc/common/block/Adapter.scala | 2 +- src/main/scala/li/cil/oc/common/block/Cable.scala | 2 +- .../scala/li/cil/oc/common/block/Capacitor.scala | 2 +- src/main/scala/li/cil/oc/common/block/Case.scala | 2 +- src/main/scala/li/cil/oc/common/block/Charger.scala | 2 +- .../scala/li/cil/oc/common/block/Delegator.scala | 5 ++--- .../scala/li/cil/oc/common/block/Disassembler.scala | 2 +- .../scala/li/cil/oc/common/block/DiskDrive.scala | 2 +- src/main/scala/li/cil/oc/common/block/Geolyzer.scala | 2 +- src/main/scala/li/cil/oc/common/block/Hologram.scala | 2 +- .../li/cil/oc/common/block/PowerConverter.scala | 2 +- .../li/cil/oc/common/block/PowerDistributor.scala | 2 +- src/main/scala/li/cil/oc/common/block/Rack.scala | 2 +- src/main/scala/li/cil/oc/common/block/Redstone.scala | 2 +- .../li/cil/oc/common/block/RobotAssembler.scala | 2 +- .../scala/li/cil/oc/common/block/RobotProxy.scala | 4 ++-- src/main/scala/li/cil/oc/common/block/Screen.scala | 2 +- src/main/scala/li/cil/oc/common/block/Switch.scala | 2 +- .../li/cil/oc/common/component/TextBuffer.scala | 8 ++++---- .../li/cil/oc/common/container/Disassembler.scala | 3 +-- .../oc/common/container/DynamicComponentSlot.scala | 3 +-- .../scala/li/cil/oc/common/container/Player.scala | 4 ++-- .../scala/li/cil/oc/common/container/Robot.scala | 2 +- .../li/cil/oc/common/container/RobotAssembler.scala | 2 +- .../scala/li/cil/oc/common/tileentity/Adapter.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Cable.scala | 4 +++- .../li/cil/oc/common/tileentity/Capacitor.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Case.scala | 4 ++-- .../scala/li/cil/oc/common/tileentity/Charger.scala | 4 +++- .../li/cil/oc/common/tileentity/Disassembler.scala | 4 +++- .../li/cil/oc/common/tileentity/DiskDrive.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Geolyzer.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Hologram.scala | 4 ++-- .../scala/li/cil/oc/common/tileentity/Keyboard.scala | 2 +- .../li/cil/oc/common/tileentity/PowerConverter.scala | 4 +++- .../cil/oc/common/tileentity/PowerDistributor.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Rack.scala | 6 ++++-- .../scala/li/cil/oc/common/tileentity/Redstone.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Robot.scala | 2 +- .../li/cil/oc/common/tileentity/RobotAssembler.scala | 4 +++- .../li/cil/oc/common/tileentity/RobotProxy.scala | 6 ++---- .../scala/li/cil/oc/common/tileentity/Router.scala | 4 +++- .../scala/li/cil/oc/common/tileentity/Screen.scala | 4 ++-- .../li/cil/oc/common/tileentity/WirelessRouter.scala | 4 +++- .../cil/oc/common/tileentity/traits/Computer.scala | 4 +--- .../cil/oc/common/tileentity/traits/TileEntity.scala | 5 ++--- .../scala/li/cil/oc/server/network/Component.scala | 2 +- .../scala/li/cil/oc/server/network/Network.scala | 8 ++++---- 54 files changed, 104 insertions(+), 83 deletions(-) diff --git a/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java b/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java index 3cc919282..f2a06ee0f 100644 --- a/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java +++ b/src/main/java/li/cil/oc/common/asm/SimpleComponentTickHandler.java @@ -1,6 +1,5 @@ package li.cil.oc.common.asm; -import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; import li.cil.oc.api.Network; @@ -20,7 +19,7 @@ public final class SimpleComponentTickHandler implements ITickHandler { } public static void schedule(final TileEntity tileEntity) { - if (FMLCommonHandler.instance().getEffectiveSide().isServer()) { + if (tileEntity.hasWorldObj() && !tileEntity.getWorldObj().isRemote) { synchronized (pending) { pending.add(new Runnable() { @Override diff --git a/src/main/scala/li/cil/oc/Settings.scala b/src/main/scala/li/cil/oc/Settings.scala index c673cd4ce..3fd8bd133 100644 --- a/src/main/scala/li/cil/oc/Settings.scala +++ b/src/main/scala/li/cil/oc/Settings.scala @@ -235,6 +235,7 @@ object Settings { val hologramMaxScaleByTier = Array(3, 4) val robotComplexityByTier = Array(12, 24, 32, 9001) var rTreeDebugRenderer = false + var blockRenderId = -1 // Power conversion values. These are the same values used by Universal // Electricity to provide global power support. diff --git a/src/main/scala/li/cil/oc/client/Proxy.scala b/src/main/scala/li/cil/oc/client/Proxy.scala index bd694af21..aab6bf84c 100644 --- a/src/main/scala/li/cil/oc/client/Proxy.scala +++ b/src/main/scala/li/cil/oc/client/Proxy.scala @@ -12,7 +12,7 @@ import li.cil.oc.client.renderer.{PetRenderer, TextBufferRenderCache, WirelessNe import li.cil.oc.common.component.TextBuffer import li.cil.oc.common.tileentity.Rack import li.cil.oc.common.{tileentity, Proxy => CommonProxy} -import li.cil.oc.{Items, OpenComputers} +import li.cil.oc.{Settings, Items, OpenComputers} import net.minecraft.client.Minecraft import net.minecraft.client.resources.ReloadableResourceManager import net.minecraftforge.client.MinecraftForgeClient @@ -30,7 +30,7 @@ private[oc] class Proxy extends CommonProxy { NetworkRegistry.instance.registerGuiHandler(OpenComputers, GuiHandler) - BlockRenderer.getRenderId = RenderingRegistry.getNextAvailableRenderId + Settings.blockRenderId = RenderingRegistry.getNextAvailableRenderId RenderingRegistry.registerBlockHandler(BlockRenderer) ClientRegistry.bindTileEntitySpecialRenderer(classOf[tileentity.Cable], CableRenderer) diff --git a/src/main/scala/li/cil/oc/client/renderer/block/BlockRenderer.scala b/src/main/scala/li/cil/oc/client/renderer/block/BlockRenderer.scala index d69c8c81a..8714b5ec8 100644 --- a/src/main/scala/li/cil/oc/client/renderer/block/BlockRenderer.scala +++ b/src/main/scala/li/cil/oc/client/renderer/block/BlockRenderer.scala @@ -1,6 +1,7 @@ package li.cil.oc.client.renderer.block import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler +import li.cil.oc.Settings import li.cil.oc.client.Textures import li.cil.oc.client.renderer.tileentity.{CableRenderer, RobotRenderer} import li.cil.oc.common.block._ @@ -13,7 +14,7 @@ import net.minecraftforge.common.ForgeDirection import org.lwjgl.opengl.GL11 object BlockRenderer extends ISimpleBlockRenderingHandler { - var getRenderId = -1 + def getRenderId = Settings.blockRenderId override def shouldRender3DInInventory() = true diff --git a/src/main/scala/li/cil/oc/common/EventHandler.scala b/src/main/scala/li/cil/oc/common/EventHandler.scala index 3fd9d7176..f7a69b84f 100644 --- a/src/main/scala/li/cil/oc/common/EventHandler.scala +++ b/src/main/scala/li/cil/oc/common/EventHandler.scala @@ -13,8 +13,8 @@ import li.cil.oc.client.renderer.PetRenderer import li.cil.oc.client.{PacketSender => ClientPacketSender} import li.cil.oc.common.tileentity.traits.power import li.cil.oc.server.{PacketSender => ServerPacketSender} -import li.cil.oc.util.{LuaStateFactory, mods} import li.cil.oc.util.mods.Mods +import li.cil.oc.util.{LuaStateFactory, mods} import net.minecraft.client.Minecraft import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} import net.minecraft.inventory.IInventory @@ -31,18 +31,18 @@ object EventHandler extends ITickHandler with IConnectionHandler with ICraftingH val pending = mutable.Buffer.empty[() => Unit] def schedule(tileEntity: TileEntity) = - if (FMLCommonHandler.instance.getEffectiveSide.isServer) pending.synchronized { + if (tileEntity.hasWorldObj && !tileEntity.getWorldObj.isRemote) pending.synchronized { pending += (() => Network.joinOrCreateNetwork(tileEntity)) } @Optional.Method(modid = "ForgeMultipart") def schedule(part: TMultiPart) = - if (FMLCommonHandler.instance.getEffectiveSide.isServer) pending.synchronized { + if (part.world != null && !part.world.isRemote) pending.synchronized { pending += (() => Network.joinOrCreateNetwork(part.tile)) } @Optional.Method(modid = "IC2") - def scheduleIC2Add(tileEntity: power.IndustrialCraft2) = if (FMLCommonHandler.instance.getEffectiveSide.isServer) pending.synchronized { + def scheduleIC2Add(tileEntity: power.IndustrialCraft2) = if (tileEntity.hasWorldObj && !tileEntity.getWorldObj.isRemote) pending.synchronized { pending += (() => if (!tileEntity.addedToPowerGrid && !tileEntity.isInvalid) { MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(tileEntity)) tileEntity.addedToPowerGrid = true @@ -50,14 +50,14 @@ object EventHandler extends ITickHandler with IConnectionHandler with ICraftingH } @Optional.Method(modid = "IC2") - def scheduleIC2Remove(tileEntity: power.IndustrialCraft2) = if (FMLCommonHandler.instance.getEffectiveSide.isServer) pending.synchronized { + def scheduleIC2Remove(tileEntity: power.IndustrialCraft2) = if (tileEntity.hasWorldObj && !tileEntity.getWorldObj.isRemote) pending.synchronized { pending += (() => if (tileEntity.addedToPowerGrid) { MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(tileEntity)) tileEntity.addedToPowerGrid = false }) } - def scheduleWirelessRedstone(rs: server.component.RedstoneWireless) = if (FMLCommonHandler.instance.getEffectiveSide.isServer) pending.synchronized { + def scheduleWirelessRedstone(rs: server.component.RedstoneWireless) = if (rs.owner.isServer) pending.synchronized { pending += (() => if (!rs.owner.isInvalid) { mods.WirelessRedstone.addReceiver(rs) mods.WirelessRedstone.updateOutput(rs) diff --git a/src/main/scala/li/cil/oc/common/block/AccessPoint.scala b/src/main/scala/li/cil/oc/common/block/AccessPoint.scala index 78da0ef30..9f711277b 100644 --- a/src/main/scala/li/cil/oc/common/block/AccessPoint.scala +++ b/src/main/scala/li/cil/oc/common/block/AccessPoint.scala @@ -54,5 +54,5 @@ class AccessPoint(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.WirelessRouter) + override def createTileEntity(world: World) = Some(new tileentity.WirelessRouter(world.isRemote)) } diff --git a/src/main/scala/li/cil/oc/common/block/Adapter.scala b/src/main/scala/li/cil/oc/common/block/Adapter.scala index 34fe19900..edddb8d89 100644 --- a/src/main/scala/li/cil/oc/common/block/Adapter.scala +++ b/src/main/scala/li/cil/oc/common/block/Adapter.scala @@ -39,7 +39,7 @@ class Adapter(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Adapter) + override def createTileEntity(world: World) = Some(new tileentity.Adapter(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Cable.scala b/src/main/scala/li/cil/oc/common/block/Cable.scala index d4f0a8ba5..a1cfe7405 100644 --- a/src/main/scala/li/cil/oc/common/block/Cable.scala +++ b/src/main/scala/li/cil/oc/common/block/Cable.scala @@ -43,7 +43,7 @@ class Cable(val parent: SpecialDelegator) extends SpecialDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Cable) + override def createTileEntity(world: World) = Some(new tileentity.Cable(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Capacitor.scala b/src/main/scala/li/cil/oc/common/block/Capacitor.scala index 882ee329f..dc009efa8 100644 --- a/src/main/scala/li/cil/oc/common/block/Capacitor.scala +++ b/src/main/scala/li/cil/oc/common/block/Capacitor.scala @@ -51,7 +51,7 @@ class Capacitor(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Capacitor) + override def createTileEntity(world: World) = Some(new tileentity.Capacitor(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Case.scala b/src/main/scala/li/cil/oc/common/block/Case.scala index cbab72bb4..915685618 100644 --- a/src/main/scala/li/cil/oc/common/block/Case.scala +++ b/src/main/scala/li/cil/oc/common/block/Case.scala @@ -82,7 +82,7 @@ abstract class Case(val parent: SimpleDelegator) extends RedstoneAware with Simp // ----------------------------------------------------------------------- // - override def createTileEntity(world: World) = Some(new tileentity.Case(tier, world.isRemote)) + override def createTileEntity(world: World) = Some(new tileentity.Case(world.isRemote, tier)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Charger.scala b/src/main/scala/li/cil/oc/common/block/Charger.scala index cd490777e..4f644c5e9 100644 --- a/src/main/scala/li/cil/oc/common/block/Charger.scala +++ b/src/main/scala/li/cil/oc/common/block/Charger.scala @@ -54,7 +54,7 @@ class Charger(val parent: SimpleDelegator) extends RedstoneAware with SimpleDele Textures.Charger.iconSideCharging = iconRegister.registerIcon(Settings.resourceDomain + ":charger_side_on") } - override def createTileEntity(world: World) = Some(new tileentity.Charger()) + override def createTileEntity(world: World) = Some(new tileentity.Charger(world.isRemote)) override def canConnectToRedstone(world: IBlockAccess, x: Int, y: Int, z: Int, side: ForgeDirection) = true diff --git a/src/main/scala/li/cil/oc/common/block/Delegator.scala b/src/main/scala/li/cil/oc/common/block/Delegator.scala index ce36e2368..b909d73af 100644 --- a/src/main/scala/li/cil/oc/common/block/Delegator.scala +++ b/src/main/scala/li/cil/oc/common/block/Delegator.scala @@ -3,10 +3,9 @@ package li.cil.oc.common.block import java.util import java.util.Random -import cpw.mods.fml.common.{FMLCommonHandler, Optional} +import cpw.mods.fml.common.Optional import cpw.mods.fml.relauncher.{Side, SideOnly} import li.cil.oc.client.KeyBindings -import li.cil.oc.client.renderer.block.BlockRenderer import li.cil.oc.common.tileentity.traits.{BundledRedstoneAware, Colored, Rotatable} import li.cil.oc.util.mods.Mods import li.cil.oc.util.{Color, ItemCosts} @@ -344,7 +343,7 @@ class Delegator[Child <: Delegate](id: Int) extends Block(id, Material.iron) { } } - override def getRenderType = if (FMLCommonHandler.instance.getEffectiveSide.isClient) BlockRenderer.getRenderId else -1 + override def getRenderType = Settings.blockRenderId override def getLightOpacity(world: World, x: Int, y: Int, z: Int) = subBlock(world, x, y, z) match { diff --git a/src/main/scala/li/cil/oc/common/block/Disassembler.scala b/src/main/scala/li/cil/oc/common/block/Disassembler.scala index 997a7a25d..084418b81 100644 --- a/src/main/scala/li/cil/oc/common/block/Disassembler.scala +++ b/src/main/scala/li/cil/oc/common/block/Disassembler.scala @@ -43,7 +43,7 @@ class Disassembler(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Disassembler) + override def createTileEntity(world: World) = Some(new tileentity.Disassembler(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/DiskDrive.scala b/src/main/scala/li/cil/oc/common/block/DiskDrive.scala index 7573bdd6e..42d9b651a 100644 --- a/src/main/scala/li/cil/oc/common/block/DiskDrive.scala +++ b/src/main/scala/li/cil/oc/common/block/DiskDrive.scala @@ -61,7 +61,7 @@ class DiskDrive(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.DiskDrive) + override def createTileEntity(world: World) = Some(new tileentity.DiskDrive(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Geolyzer.scala b/src/main/scala/li/cil/oc/common/block/Geolyzer.scala index 2f2bbf3e2..ffd5621d1 100644 --- a/src/main/scala/li/cil/oc/common/block/Geolyzer.scala +++ b/src/main/scala/li/cil/oc/common/block/Geolyzer.scala @@ -44,6 +44,6 @@ class Geolyzer(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Geolyzer) + override def createTileEntity(world: World) = Some(new tileentity.Geolyzer(world.isRemote)) } diff --git a/src/main/scala/li/cil/oc/common/block/Hologram.scala b/src/main/scala/li/cil/oc/common/block/Hologram.scala index 2f7c4dcfc..4ab8d3bf3 100644 --- a/src/main/scala/li/cil/oc/common/block/Hologram.scala +++ b/src/main/scala/li/cil/oc/common/block/Hologram.scala @@ -68,7 +68,7 @@ abstract class Hologram(val parent: SpecialDelegator) extends SpecialDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Hologram(tier)) + override def createTileEntity(world: World) = Some(new tileentity.Hologram(world.isRemote, tier)) } object Hologram { diff --git a/src/main/scala/li/cil/oc/common/block/PowerConverter.scala b/src/main/scala/li/cil/oc/common/block/PowerConverter.scala index b334c979f..480b62382 100644 --- a/src/main/scala/li/cil/oc/common/block/PowerConverter.scala +++ b/src/main/scala/li/cil/oc/common/block/PowerConverter.scala @@ -68,5 +68,5 @@ class PowerConverter(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.PowerConverter) + override def createTileEntity(world: World) = Some(new tileentity.PowerConverter(world.isRemote)) } diff --git a/src/main/scala/li/cil/oc/common/block/PowerDistributor.scala b/src/main/scala/li/cil/oc/common/block/PowerDistributor.scala index 8f026b253..e4efadb9f 100644 --- a/src/main/scala/li/cil/oc/common/block/PowerDistributor.scala +++ b/src/main/scala/li/cil/oc/common/block/PowerDistributor.scala @@ -45,6 +45,6 @@ class PowerDistributor(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.PowerDistributor) + override def createTileEntity(world: World) = Some(new tileentity.PowerDistributor(world.isRemote)) } diff --git a/src/main/scala/li/cil/oc/common/block/Rack.scala b/src/main/scala/li/cil/oc/common/block/Rack.scala index 5482eaad0..11bdabeae 100644 --- a/src/main/scala/li/cil/oc/common/block/Rack.scala +++ b/src/main/scala/li/cil/oc/common/block/Rack.scala @@ -51,7 +51,7 @@ class Rack(val parent: SpecialDelegator) extends RedstoneAware with SpecialDeleg override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Rack) + override def createTileEntity(world: World) = Some(new tileentity.Rack(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Redstone.scala b/src/main/scala/li/cil/oc/common/block/Redstone.scala index 6d6d479b6..dc95fd98d 100644 --- a/src/main/scala/li/cil/oc/common/block/Redstone.scala +++ b/src/main/scala/li/cil/oc/common/block/Redstone.scala @@ -40,5 +40,5 @@ class Redstone(val parent: SimpleDelegator) extends RedstoneAware with SimpleDel icons(ForgeDirection.EAST.ordinal) = icons(ForgeDirection.NORTH.ordinal) } - override def createTileEntity(world: World) = Some(new tileentity.Redstone()) + override def createTileEntity(world: World) = Some(new tileentity.Redstone(world.isRemote)) } diff --git a/src/main/scala/li/cil/oc/common/block/RobotAssembler.scala b/src/main/scala/li/cil/oc/common/block/RobotAssembler.scala index 00a45d3b2..26f1a3d82 100644 --- a/src/main/scala/li/cil/oc/common/block/RobotAssembler.scala +++ b/src/main/scala/li/cil/oc/common/block/RobotAssembler.scala @@ -48,7 +48,7 @@ class RobotAssembler(val parent: SpecialDelegator) extends SpecialDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.RobotAssembler) + override def createTileEntity(world: World) = Some(new tileentity.RobotAssembler(world.isRemote)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala index 06b991ef9..2175caa2b 100644 --- a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala +++ b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala @@ -87,8 +87,8 @@ class RobotProxy(val parent: SpecialDelegator) extends RedstoneAware with Specia override def createTileEntity(world: World) = { moving.get match { - case Some(robot) => Some(new tileentity.RobotProxy(robot)) - case _ => Some(new tileentity.RobotProxy(new tileentity.Robot(world.isRemote))) + case Some(robot) => Some(new tileentity.RobotProxy(world.isRemote, robot)) + case _ => Some(new tileentity.RobotProxy(world.isRemote, new tileentity.Robot(world.isRemote))) } } diff --git a/src/main/scala/li/cil/oc/common/block/Screen.scala b/src/main/scala/li/cil/oc/common/block/Screen.scala index da00b4dca..58b017271 100644 --- a/src/main/scala/li/cil/oc/common/block/Screen.scala +++ b/src/main/scala/li/cil/oc/common/block/Screen.scala @@ -299,7 +299,7 @@ abstract class Screen(val parent: SimpleDelegator) extends RedstoneAware with Si override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Screen(tier)) + override def createTileEntity(world: World) = Some(new tileentity.Screen(world.isRemote, tier)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/block/Switch.scala b/src/main/scala/li/cil/oc/common/block/Switch.scala index de24ab361..c57234a2c 100644 --- a/src/main/scala/li/cil/oc/common/block/Switch.scala +++ b/src/main/scala/li/cil/oc/common/block/Switch.scala @@ -42,5 +42,5 @@ class Switch(val parent: SimpleDelegator) extends SimpleDelegate { override def hasTileEntity = true - override def createTileEntity(world: World) = Some(new tileentity.Router) + override def createTileEntity(world: World) = Some(new tileentity.Router(world.isRemote)) } diff --git a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala index 21ed90835..43cd67d67 100644 --- a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala +++ b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala @@ -1,7 +1,6 @@ package li.cil.oc.common.component import com.google.common.base.Strings -import cpw.mods.fml.common.FMLCommonHandler import cpw.mods.fml.relauncher.{Side, SideOnly} import li.cil.oc.api.component.TextBuffer.ColorDepth import li.cil.oc.api.driver.Container @@ -58,8 +57,8 @@ class TextBuffer(val owner: Container) extends ManagedComponent with api.compone powerConsumptionPerTick * (mw * mh) / (w * h) } - val proxy = - if (FMLCommonHandler.instance.getEffectiveSide.isClient) new TextBuffer.ClientProxy(this) + lazy val proxy = + if (owner.world.isRemote) new TextBuffer.ClientProxy(this) else new TextBuffer.ServerProxy(this) val data = new util.TextBuffer(maxResolution, PackedColor.Depth.format(maxDepth)) @@ -350,7 +349,8 @@ class TextBuffer(val owner: Container) extends ManagedComponent with api.compone override def load(nbt: NBTTagCompound) { super.load(nbt) - if (FMLCommonHandler.instance.getEffectiveSide.isClient) { + // World will be null on the server and set on the client. + if (owner.world != null) { if (!Strings.isNullOrEmpty(proxy.nodeAddress)) return // Only load once. proxy.nodeAddress = nbt.getCompoundTag("node").getString("address") TextBuffer.registerClientBuffer(this) diff --git a/src/main/scala/li/cil/oc/common/container/Disassembler.scala b/src/main/scala/li/cil/oc/common/container/Disassembler.scala index 5f73f7d1d..693098397 100644 --- a/src/main/scala/li/cil/oc/common/container/Disassembler.scala +++ b/src/main/scala/li/cil/oc/common/container/Disassembler.scala @@ -1,6 +1,5 @@ package li.cil.oc.common.container -import cpw.mods.fml.common.FMLCommonHandler import cpw.mods.fml.relauncher.{Side, SideOnly} import li.cil.oc.common.tileentity import net.minecraft.entity.player.InventoryPlayer @@ -21,7 +20,7 @@ class Disassembler(playerInventory: InventoryPlayer, disassembler: tileentity.Di override def detectAndSendChanges() { super.detectAndSendChanges() - if (FMLCommonHandler.instance.getEffectiveSide.isServer) { + if (!disassembler.world.isRemote) { if (math.abs(disassembler.progress - disassemblyProgress) > 0.2) { disassemblyProgress = disassembler.progress sendProgressBarUpdate(0, (disassemblyProgress * 5).toInt) diff --git a/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala b/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala index 5afdc489d..8bf9aad8f 100644 --- a/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala +++ b/src/main/scala/li/cil/oc/common/container/DynamicComponentSlot.scala @@ -1,6 +1,5 @@ package li.cil.oc.common.container -import cpw.mods.fml.common.FMLCommonHandler import li.cil.oc.api import li.cil.oc.client.gui.Icons import li.cil.oc.common.InventorySlots.InventorySlot @@ -31,7 +30,7 @@ class DynamicComponentSlot(val container: Player, inventory: IInventory, index: } override protected def clearIfInvalid(player: EntityPlayer) { - if (FMLCommonHandler.instance.getEffectiveSide.isServer && getHasStack && !isItemValid(getStack)) { + if (player.getEntityWorld != null && !player.getEntityWorld.isRemote && getHasStack && !isItemValid(getStack)) { val stack = getStack putStack(null) player.inventory.addItemStackToInventory(stack) diff --git a/src/main/scala/li/cil/oc/common/container/Player.scala b/src/main/scala/li/cil/oc/common/container/Player.scala index 07cddafb2..95bfbc89f 100644 --- a/src/main/scala/li/cil/oc/common/container/Player.scala +++ b/src/main/scala/li/cil/oc/common/container/Player.scala @@ -23,7 +23,7 @@ abstract class Player(val playerInventory: InventoryPlayer, val otherInventory: override def slotClick(slot: Int, mouseClick: Int, holdingShift: Int, player: EntityPlayer) = { val result = super.slotClick(slot, mouseClick, holdingShift, player) - if (FMLCommonHandler.instance.getEffectiveSide.isServer) { + if (player.getEntityWorld != null && !player.getEntityWorld.isRemote) { detectAndSendChanges() // We have to enforce this more than MC does itself // because stacks can change their... "character" just by being inserted in // certain containers - by being assigned an address. @@ -36,7 +36,7 @@ abstract class Player(val playerInventory: InventoryPlayer, val otherInventory: val slot = Option(inventorySlots.get(index)).map(_.asInstanceOf[Slot]).orNull if (slot != null && slot.getHasStack) { tryTransferStackInSlot(slot, slot.inventory == otherInventory) - if (FMLCommonHandler.instance.getEffectiveSide.isServer) { + if (player.getEntityWorld != null && !player.getEntityWorld.isRemote) { detectAndSendChanges() } } diff --git a/src/main/scala/li/cil/oc/common/container/Robot.scala b/src/main/scala/li/cil/oc/common/container/Robot.scala index 4a0e1a925..4f4e362f5 100644 --- a/src/main/scala/li/cil/oc/common/container/Robot.scala +++ b/src/main/scala/li/cil/oc/common/container/Robot.scala @@ -59,7 +59,7 @@ class Robot(playerInventory: InventoryPlayer, robot: tileentity.Robot) extends P override def detectAndSendChanges() { super.detectAndSendChanges() - if (FMLCommonHandler.instance.getEffectiveSide.isServer) { + if (robot.isServer) { val currentBuffer = robot.globalBuffer.toInt / factor if (currentBuffer != lastSentBuffer) { lastSentBuffer = currentBuffer diff --git a/src/main/scala/li/cil/oc/common/container/RobotAssembler.scala b/src/main/scala/li/cil/oc/common/container/RobotAssembler.scala index e1e2bae1e..02b0535d5 100644 --- a/src/main/scala/li/cil/oc/common/container/RobotAssembler.scala +++ b/src/main/scala/li/cil/oc/common/container/RobotAssembler.scala @@ -77,7 +77,7 @@ class RobotAssembler(playerInventory: InventoryPlayer, val assembler: tileentity override def detectAndSendChanges() { super.detectAndSendChanges() - if (FMLCommonHandler.instance.getEffectiveSide.isServer) { + if (assembler.isServer) { if (isAssembling != assembler.isAssembling) { isAssembling = assembler.isAssembling sendProgressBarUpdate(0, if (isAssembling) 1 else 0) diff --git a/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala b/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala index f9e90ab09..130ee96d3 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Adapter.scala @@ -8,7 +8,9 @@ import net.minecraftforge.common.ForgeDirection import scala.collection.mutable -class Adapter extends traits.Environment with Analyzable { +class Adapter(val isClient: Boolean) extends traits.Environment with Analyzable { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.Network).create() private val blocks = Array.fill[Option[(ManagedEnvironment, api.driver.Block)]](6)(None) diff --git a/src/main/scala/li/cil/oc/common/tileentity/Cable.scala b/src/main/scala/li/cil/oc/common/tileentity/Cable.scala index 7e2f19a09..e4b6b1bcc 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Cable.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Cable.scala @@ -3,7 +3,9 @@ package li.cil.oc.common.tileentity import li.cil.oc.api.network.Visibility import li.cil.oc.{api, common} -class Cable extends traits.Environment with traits.NotAnalyzable { +class Cable(val isClient: Boolean) extends traits.Environment with traits.NotAnalyzable { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.None).create() override def canUpdate = false diff --git a/src/main/scala/li/cil/oc/common/tileentity/Capacitor.scala b/src/main/scala/li/cil/oc/common/tileentity/Capacitor.scala index 7b22683ce..7dba41ec3 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Capacitor.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Capacitor.scala @@ -4,7 +4,9 @@ import li.cil.oc.api.network.{Node, Visibility} import li.cil.oc.{Settings, api} import net.minecraftforge.common.ForgeDirection -class Capacitor extends traits.Environment { +class Capacitor(val isClient: Boolean) extends traits.Environment { + def this() = this(false) + // Start with maximum theoretical capacity, gets reduced after validation. // This is done so that we don't lose energy while loading. val node = api.Network.newNode(this, Visibility.Network). diff --git a/src/main/scala/li/cil/oc/common/tileentity/Case.scala b/src/main/scala/li/cil/oc/common/tileentity/Case.scala index 6f4d0d68f..041bb7558 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Case.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Case.scala @@ -12,8 +12,8 @@ import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class Case(var tier: Int, val isRemote: Boolean) extends traits.PowerAcceptor with traits.Computer with traits.Colored { - def this() = this(0, false) +class Case(val isClient: Boolean, var tier: Int) extends traits.PowerAcceptor with traits.Computer with traits.Colored { + def this() = this(false, 0) color = Color.byTier(tier) diff --git a/src/main/scala/li/cil/oc/common/tileentity/Charger.scala b/src/main/scala/li/cil/oc/common/tileentity/Charger.scala index e3599342e..eeeccb41c 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Charger.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Charger.scala @@ -8,7 +8,9 @@ import net.minecraft.entity.player.EntityPlayer import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class Charger extends traits.Environment with traits.PowerAcceptor with traits.RedstoneAware with traits.Rotatable with Analyzable { +class Charger(val isClient: Boolean) extends traits.Environment with traits.PowerAcceptor with traits.RedstoneAware with traits.Rotatable with Analyzable { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.None). withConnector(Settings.get.bufferConverter). create() diff --git a/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala b/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala index 14c651f80..0ed4e4732 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala @@ -19,7 +19,9 @@ import net.minecraftforge.oredict.{ShapedOreRecipe, ShapelessOreRecipe} import scala.collection.convert.WrapAsScala._ import scala.collection.mutable -class Disassembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory { +class Disassembler(val isClient: Boolean) extends traits.Environment with traits.PowerAcceptor with traits.Inventory { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.None). withConnector(Settings.get.bufferConverter). create() diff --git a/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala b/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala index 720379d10..f19ce48fd 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/DiskDrive.scala @@ -8,7 +8,9 @@ import li.cil.oc.{Settings, api} import net.minecraft.entity.player.EntityPlayer import net.minecraft.item.ItemStack -class DiskDrive extends traits.Environment with traits.ComponentInventory with traits.Rotatable with Analyzable { +class DiskDrive(val isClient: Boolean) extends traits.Environment with traits.ComponentInventory with traits.Rotatable with Analyzable { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.None).create() // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/tileentity/Geolyzer.scala b/src/main/scala/li/cil/oc/common/tileentity/Geolyzer.scala index 781a025d5..b521c4da8 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Geolyzer.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Geolyzer.scala @@ -5,7 +5,9 @@ import li.cil.oc.{Settings, api} import net.minecraft.block.{Block, BlockFluid} import net.minecraftforge.fluids.FluidRegistry -class Geolyzer extends traits.Environment { +class Geolyzer(val isClient: Boolean) extends traits.Environment { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.Network). withComponent("geolyzer"). withConnector(). diff --git a/src/main/scala/li/cil/oc/common/tileentity/Hologram.scala b/src/main/scala/li/cil/oc/common/tileentity/Hologram.scala index eef10cb1b..528b697b3 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Hologram.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Hologram.scala @@ -9,8 +9,8 @@ import net.minecraft.nbt.NBTTagCompound import net.minecraft.util.AxisAlignedBB import net.minecraftforge.common.ForgeDirection -class Hologram(var tier: Int) extends traits.Environment with SidedEnvironment with Analyzable { - def this() = this(0) +class Hologram(val isClient: Boolean, var tier: Int) extends traits.Environment with SidedEnvironment with Analyzable { + def this() = this(false, 0) val node = api.Network.newNode(this, Visibility.Network). withComponent("hologram"). diff --git a/src/main/scala/li/cil/oc/common/tileentity/Keyboard.scala b/src/main/scala/li/cil/oc/common/tileentity/Keyboard.scala index 17db6548f..68994f1c8 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Keyboard.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Keyboard.scala @@ -8,7 +8,7 @@ import net.minecraft.entity.player.EntityPlayer import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class Keyboard(isRemote: Boolean) extends traits.Environment with traits.Rotatable with SidedEnvironment with Analyzable { +class Keyboard(val isClient: Boolean) extends traits.Environment with traits.Rotatable with SidedEnvironment with Analyzable { def this() = this(false) override def validFacings = ForgeDirection.VALID_DIRECTIONS diff --git a/src/main/scala/li/cil/oc/common/tileentity/PowerConverter.scala b/src/main/scala/li/cil/oc/common/tileentity/PowerConverter.scala index e2cfe409f..cce9b5642 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/PowerConverter.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/PowerConverter.scala @@ -5,7 +5,9 @@ import li.cil.oc.api.network._ import li.cil.oc.{Settings, api} import net.minecraftforge.common.ForgeDirection -class PowerConverter extends traits.PowerAcceptor with traits.Environment with traits.NotAnalyzable { +class PowerConverter(val isClient: Boolean) extends traits.PowerAcceptor with traits.Environment with traits.NotAnalyzable { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.Network). withConnector(Settings.get.bufferConverter). create() diff --git a/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala b/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala index e21397a22..4f7151ccc 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/PowerDistributor.scala @@ -7,7 +7,9 @@ import li.cil.oc.{Settings, api} import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class PowerDistributor extends traits.Environment with traits.PowerBalancer with traits.NotAnalyzable { +class PowerDistributor(val isClient: Boolean) extends traits.Environment with traits.PowerBalancer with traits.NotAnalyzable { + def this() = this(false) + val node = null private val nodes = Array.fill(6)(api.Network.newNode(this, Visibility.Network). diff --git a/src/main/scala/li/cil/oc/common/tileentity/Rack.scala b/src/main/scala/li/cil/oc/common/tileentity/Rack.scala index 11f6c1b56..5e41966a2 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Rack.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Rack.scala @@ -22,13 +22,15 @@ import scala.collection.mutable // See AbstractBusAware as to why we have to define the IBusDevice here. @Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2") -class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalancer with traits.Inventory with traits.Rotatable with traits.BundledRedstoneAware with traits.AbstractBusAware with Analyzable with IBusDevice { +class Rack(val isClient: Boolean) extends traits.PowerAcceptor with traits.Hub with traits.PowerBalancer with traits.Inventory with traits.Rotatable with traits.BundledRedstoneAware with traits.AbstractBusAware with Analyzable with IBusDevice { + def this() = this(false) + val servers = Array.fill(getSizeInventory)(None: Option[component.Server]) val sides = Seq(ForgeDirection.UP, ForgeDirection.EAST, ForgeDirection.WEST, ForgeDirection.DOWN). padTo(servers.length, ForgeDirection.UNKNOWN).toArray - val terminals = (0 until servers.length).map(new common.component.Terminal(this, _)).toArray + lazy val terminals = (0 until servers.length).map(new common.component.Terminal(this, _)).toArray var range = 16 diff --git a/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala b/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala index 99471c910..439413a08 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Redstone.scala @@ -9,7 +9,9 @@ import li.cil.oc.util.mods.BundledRedstone import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class Redstone extends Environment with BundledRedstoneAware { +class Redstone(val isClient: Boolean) extends Environment with BundledRedstoneAware { + def this() = this(false) + val instance = if (BundledRedstone.isAvailable) new component.Redstone[BundledRedstoneAware](this) with component.RedstoneBundled else new component.Redstone(this) val node = instance.node if (node != null) { diff --git a/src/main/scala/li/cil/oc/common/tileentity/Robot.scala b/src/main/scala/li/cil/oc/common/tileentity/Robot.scala index ea5cfaa4e..58a8b4f97 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Robot.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Robot.scala @@ -30,7 +30,7 @@ import scala.collection.mutable // robot moves we only create a new proxy tile entity, hook the instance of this // class that was held by the old proxy to it and can then safely forget the // old proxy, which will be cleaned up by Minecraft like any other tile entity. -class Robot(val isRemote: Boolean) extends traits.Computer with traits.PowerInformation with api.machine.Robot { +class Robot(val isClient: Boolean) extends traits.Computer with traits.PowerInformation with api.machine.Robot { def this() = this(false) var proxy: RobotProxy = _ diff --git a/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala b/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala index 54e86fa9a..d341676fe 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/RobotAssembler.scala @@ -14,7 +14,9 @@ import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class RobotAssembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with traits.Rotatable with SidedEnvironment { +class RobotAssembler(val isClient: Boolean) extends traits.Environment with traits.PowerAcceptor with traits.Inventory with traits.Rotatable with SidedEnvironment { + def this() = this(false) + val node = api.Network.newNode(this, Visibility.None). withConnector(Settings.get.bufferConverter). create() diff --git a/src/main/scala/li/cil/oc/common/tileentity/RobotProxy.scala b/src/main/scala/li/cil/oc/common/tileentity/RobotProxy.scala index 81507ebb2..027f1edda 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/RobotProxy.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/RobotProxy.scala @@ -12,10 +12,8 @@ import net.minecraft.item.ItemStack import net.minecraft.nbt.NBTTagCompound import net.minecraftforge.common.ForgeDirection -class RobotProxy(val robot: Robot) extends traits.Computer with traits.PowerInformation with api.machine.Robot with ISidedInventory { - def this() = this(new Robot(false)) - - override def isRemote = robot.isClient +class RobotProxy(val isClient: Boolean, val robot: Robot) extends traits.Computer with traits.PowerInformation with api.machine.Robot with ISidedInventory { + def this() = this(false, new Robot(false)) // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/common/tileentity/Router.scala b/src/main/scala/li/cil/oc/common/tileentity/Router.scala index 20bedd22d..15844a575 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Router.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Router.scala @@ -24,7 +24,9 @@ import scala.collection.mutable // old API, so there should be no ClassNotFoundExceptions anyway. @Optional.Interface(iface = "dan200.computer.api.IPeripheral", modid = "ComputerCraft") -class Router extends traits.Hub with traits.NotAnalyzable with IPeripheral { +class Router(val isClient: Boolean) extends traits.Hub with traits.NotAnalyzable with IPeripheral { + def this() = this(false) + var lastMessage = 0L val computers = mutable.Map.empty[AnyRef, ComputerWrapper] diff --git a/src/main/scala/li/cil/oc/common/tileentity/Screen.scala b/src/main/scala/li/cil/oc/common/tileentity/Screen.scala index 098b41f57..29ab4947c 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Screen.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Screen.scala @@ -15,8 +15,8 @@ import net.minecraftforge.common.ForgeDirection import scala.collection.mutable import scala.language.postfixOps -class Screen(var tier: Int) extends traits.TextBuffer with SidedEnvironment with traits.Rotatable with traits.RedstoneAware with traits.Colored with Analyzable with Ordered[Screen] { - def this() = this(0) +class Screen(val isClient: Boolean, var tier: Int) extends traits.TextBuffer with SidedEnvironment with traits.Rotatable with traits.RedstoneAware with traits.Colored with Analyzable with Ordered[Screen] { + def this() = this(false, 0) // Enable redstone functionality. _isOutputEnabled = true diff --git a/src/main/scala/li/cil/oc/common/tileentity/WirelessRouter.scala b/src/main/scala/li/cil/oc/common/tileentity/WirelessRouter.scala index c40dbfa96..47b49448f 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/WirelessRouter.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/WirelessRouter.scala @@ -10,7 +10,9 @@ import net.minecraftforge.common.ForgeDirection import scala.collection.convert.WrapAsScala._ -class WirelessRouter extends Router with WirelessEndpoint { +class WirelessRouter(isClient: Boolean) extends Router(isClient) with WirelessEndpoint { + def this() = this(false) + var strength = Settings.get.maxWirelessRange val componentNodes = Array.fill(6)(api.Network.newNode(this, Visibility.Network).withComponent("access_point").create()) diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala index 2818d14d6..fca1e8812 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/Computer.scala @@ -21,9 +21,7 @@ import scala.collection.mutable // See AbstractBusAware as to why we have to define the IBusDevice here. @Optional.Interface(iface = "stargatetech2.api.bus.IBusDevice", modid = "StargateTech2") trait Computer extends Environment with ComponentInventory with Rotatable with BundledRedstoneAware with AbstractBusAware with IBusDevice with Analyzable with Owner { - def isRemote: Boolean - - private lazy val _computer = if (isRemote) null else Machine.create(this) + private lazy val _computer = if (isClient) null else Machine.create(this) def computer = _computer diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/TileEntity.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/TileEntity.scala index 7cd0d97db..65e22c5ed 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/TileEntity.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/TileEntity.scala @@ -2,7 +2,6 @@ package li.cil.oc.common.tileentity.traits import java.util.logging.Level -import cpw.mods.fml.common.FMLCommonHandler import cpw.mods.fml.relauncher.{Side, SideOnly} import li.cil.oc.OpenComputers import li.cil.oc.client.Sound @@ -21,9 +20,9 @@ trait TileEntity extends net.minecraft.tileentity.TileEntity { def block = getBlockType - def isClient = FMLCommonHandler.instance.getEffectiveSide.isClient + def isClient: Boolean - def isServer = FMLCommonHandler.instance.getEffectiveSide.isServer + def isServer = !isClient // ----------------------------------------------------------------------- // diff --git a/src/main/scala/li/cil/oc/server/network/Component.scala b/src/main/scala/li/cil/oc/server/network/Component.scala index 1003e37b8..64e2545ed 100644 --- a/src/main/scala/li/cil/oc/server/network/Component.scala +++ b/src/main/scala/li/cil/oc/server/network/Component.scala @@ -52,7 +52,7 @@ trait Component extends network.Component with Node { throw new IllegalArgumentException("Trying to set computer visibility to '" + value + "' on a '" + name + "' node with reachability '" + reachability + "'. It will be limited to the node's reachability.") } - if (FMLCommonHandler.instance.getEffectiveSide == Side.SERVER) { + if (FMLCommonHandler.instance.getEffectiveSide.isServer) { if (network != null) _visibility match { case Visibility.Neighbors => value match { case Visibility.Network => addTo(reachableNodes) diff --git a/src/main/scala/li/cil/oc/server/network/Network.scala b/src/main/scala/li/cil/oc/server/network/Network.scala index e4777ac5c..8dc23cf4d 100644 --- a/src/main/scala/li/cil/oc/server/network/Network.scala +++ b/src/main/scala/li/cil/oc/server/network/Network.scala @@ -504,7 +504,7 @@ object Network extends api.detail.NetworkAPI { def withConnector() = withConnector(0) - def create() = if (FMLCommonHandler.instance.getEffectiveSide == Side.SERVER) new MutableNode with NodeVarargPart { + def create() = if (FMLCommonHandler.instance.getEffectiveSide.isServer) new MutableNode with NodeVarargPart { val host = _host val reachability = _reachability } @@ -516,7 +516,7 @@ object Network extends api.detail.NetworkAPI { def withConnector() = withConnector(0) - def create() = if (FMLCommonHandler.instance.getEffectiveSide == Side.SERVER) new Component with NodeVarargPart { + def create() = if (FMLCommonHandler.instance.getEffectiveSide.isServer) new Component with NodeVarargPart { val host = _host val reachability = _reachability val name = _name @@ -530,7 +530,7 @@ object Network extends api.detail.NetworkAPI { def withComponent(name: String) = withComponent(name, _reachability) - def create() = if (FMLCommonHandler.instance.getEffectiveSide == Side.SERVER) new Connector with NodeVarargPart { + def create() = if (FMLCommonHandler.instance.getEffectiveSide.isServer) new Connector with NodeVarargPart { val host = _host val reachability = _reachability var localBufferSize = _bufferSize @@ -539,7 +539,7 @@ object Network extends api.detail.NetworkAPI { } class ComponentConnectorBuilder(val _host: Environment, val _reachability: Visibility, val _name: String, val _visibility: Visibility, val _bufferSize: Double) extends api.detail.Builder.ComponentConnectorBuilder { - def create() = if (FMLCommonHandler.instance.getEffectiveSide == Side.SERVER) new ComponentConnector with NodeVarargPart { + def create() = if (FMLCommonHandler.instance.getEffectiveSide.isServer) new ComponentConnector with NodeVarargPart { val host = _host val reachability = _reachability val name = _name