diff --git a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala index 3c0efc161..a4237eefc 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Microcontroller.scala @@ -52,6 +52,8 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C @SideOnly(Side.CLIENT) override def canConnect(side: ForgeDirection) = side != facing + override def sidedNode(side: ForgeDirection): Node = if (side != facing) super.sidedNode(side) else null + @SideOnly(Side.CLIENT) override protected def hasConnector(side: ForgeDirection) = side != facing @@ -173,7 +175,7 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C override def onMessage(message: Message): Unit = { if (message.source.network == snooperNode.network) { - for (side <- ForgeDirection.VALID_DIRECTIONS if outputSides(side.ordinal)) { + for (side <- ForgeDirection.VALID_DIRECTIONS if outputSides(side.ordinal) && side != facing) { sidedNode(side).sendToReachable(message.name, message.data: _*) } } diff --git a/src/main/scala/li/cil/oc/common/tileentity/ServerRack.scala b/src/main/scala/li/cil/oc/common/tileentity/ServerRack.scala index 2710af46e..53e02803a 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/ServerRack.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/ServerRack.scala @@ -74,6 +74,8 @@ class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerB override def canConnect(side: ForgeDirection) = side != facing + override def sidedNode(side: ForgeDirection): Node = if (side != facing) super.sidedNode(side) else null + @Method(modid = Mods.IDs.StargateTech2) override def getInterfaces(side: Int) = if (side != facing.ordinal) { super.getInterfaces(side) @@ -133,7 +135,7 @@ class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerB sides(number) match { case Some(serverSide) => val serverNode = server.machine.node - for (side <- ForgeDirection.VALID_DIRECTIONS) { + for (side <- ForgeDirection.VALID_DIRECTIONS if side != facing) { if (toLocal(side) == serverSide) sidedNode(side).connect(serverNode) else sidedNode(side).disconnect(serverNode) } diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala index cd006867d..28f4b114b 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/PowerBalancer.scala @@ -62,6 +62,6 @@ trait PowerBalancer extends PowerInformation with SidedEnvironment { private def isPrimary(connector: Connector) = { val nodes = connectors - connector != null && nodes(nodes.indexWhere(_.network == connector.network)) == connector + connector != null && nodes(nodes.indexWhere(node => node != null && node.network == connector.network)) == connector } }