diff --git a/src/main/scala/li/cil/oc/common/block/Assembler.scala b/src/main/scala/li/cil/oc/common/block/Assembler.scala index f90fecd44..9b8c08cc3 100644 --- a/src/main/scala/li/cil/oc/common/block/Assembler.scala +++ b/src/main/scala/li/cil/oc/common/block/Assembler.scala @@ -42,6 +42,16 @@ class Assembler extends SimpleBlock with traits.SpecialBlock with traits.PowerAc // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case assembler: tileentity.Assembler if assembler.isAssembling => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { if (!player.isSneaking) { 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 befdbed56..e374b714e 100644 --- a/src/main/scala/li/cil/oc/common/block/Case.scala +++ b/src/main/scala/li/cil/oc/common/block/Case.scala @@ -77,6 +77,16 @@ class Case(val tier: Int) extends RedstoneAware with traits.PowerAcceptor { // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case computer: tileentity.Case if computer.isRunning => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { if (!player.isSneaking && !Wrench.holdsApplicableWrench(player, BlockPosition(x, y, z))) { 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 cfcb2b496..53a685f83 100644 --- a/src/main/scala/li/cil/oc/common/block/Disassembler.scala +++ b/src/main/scala/li/cil/oc/common/block/Disassembler.scala @@ -44,6 +44,16 @@ class Disassembler extends SimpleBlock with traits.PowerAcceptor { // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case disassembler: tileentity.Disassembler if disassembler.isActive => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { if (!player.isSneaking) { 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 a5905dc2c..7281c625c 100644 --- a/src/main/scala/li/cil/oc/common/block/DiskDrive.scala +++ b/src/main/scala/li/cil/oc/common/block/DiskDrive.scala @@ -37,6 +37,16 @@ class DiskDrive extends SimpleBlock { // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case drive: tileentity.DiskDrive if drive.getStackInSlot(0) != null => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { world.getTileEntity(x, y, z) match { diff --git a/src/main/scala/li/cil/oc/common/block/Microcontroller.scala b/src/main/scala/li/cil/oc/common/block/Microcontroller.scala index f5e6544f0..b499078f2 100644 --- a/src/main/scala/li/cil/oc/common/block/Microcontroller.scala +++ b/src/main/scala/li/cil/oc/common/block/Microcontroller.scala @@ -63,6 +63,16 @@ class Microcontroller extends RedstoneAware with traits.PowerAcceptor { // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case computer: tileentity.Microcontroller if computer.isRunning => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { if (!player.isSneaking && !Wrench.holdsApplicableWrench(player, BlockPosition(x, y, z))) { diff --git a/src/main/scala/li/cil/oc/common/block/Raid.scala b/src/main/scala/li/cil/oc/common/block/Raid.scala index 84d7c6de5..1b47e6c08 100644 --- a/src/main/scala/li/cil/oc/common/block/Raid.scala +++ b/src/main/scala/li/cil/oc/common/block/Raid.scala @@ -25,6 +25,16 @@ class Raid extends SimpleBlock { // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case raid: tileentity.Raid if raid.presence.forall(ok => ok) => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { world.getTileEntity(x, y, z) match { 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 ba0dad2ff..e697d574d 100644 --- a/src/main/scala/li/cil/oc/common/block/RobotProxy.scala +++ b/src/main/scala/li/cil/oc/common/block/RobotProxy.scala @@ -115,6 +115,16 @@ class RobotProxy extends RedstoneAware with traits.SpecialBlock { // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case proxy: tileentity.RobotProxy if proxy.isRunning => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def getExplosionResistance(entity: Entity) = 10f override def getDrops(world: World, x: Int, y: Int, z: Int, metadata: Int, fortune: Int) = { diff --git a/src/main/scala/li/cil/oc/common/block/ServerRack.scala b/src/main/scala/li/cil/oc/common/block/ServerRack.scala index fce487c37..ed374df2e 100644 --- a/src/main/scala/li/cil/oc/common/block/ServerRack.scala +++ b/src/main/scala/li/cil/oc/common/block/ServerRack.scala @@ -53,6 +53,16 @@ class ServerRack extends RedstoneAware with traits.SpecialBlock with traits.Powe // ----------------------------------------------------------------------- // + override def hasComparatorInputOverride = true + + override def getComparatorInputOverride(world: World, x: Int, y: Int, z: Int, side: Int) = + world.getTileEntity(x, y, z) match { + case rack: tileentity.ServerRack if rack.anyRunning => 15 + case _ => 0 + } + + // ----------------------------------------------------------------------- // + override def onBlockActivated(world: World, x: Int, y: Int, z: Int, player: EntityPlayer, side: ForgeDirection, hitX: Float, hitY: Float, hitZ: Float) = { if (!player.isSneaking) { 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 a91f564a2..a7b6304df 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Disassembler.scala @@ -36,6 +36,7 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra private def setActive(value: Boolean) = if (value != isActive) { isActive = value ServerPacketSender.sendDisassemblerActive(this, isActive) + world.notifyBlocksOfNeighborChange(x, y, z, block) } // ----------------------------------------------------------------------- // 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 caf9e8124..7c6ef69b5 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/ServerRack.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/ServerRack.scala @@ -279,6 +279,7 @@ class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerB if (_isRunning(i) != isRunning) { _isRunning(i) = isRunning ServerPacketSender.sendServerState(this, i) + world.notifyBlocksOfNeighborChange(x, y, z, block) } } isOutputEnabled = hasRedstoneCard