diff --git a/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala b/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala index 3f9ee4e5f..2046e2d7f 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Assembler.scala @@ -113,16 +113,14 @@ class Assembler extends traits.Environment with traits.PowerAcceptor with traits super.updateEntity() if (output.isDefined && world.getTotalWorldTime % Settings.get.tickFrequency == 0) { val want = math.max(1, math.min(requiredEnergy, Settings.get.assemblerTickAmount * Settings.get.tickFrequency)) - val success = Settings.get.ignorePower || node.tryChangeBuffer(-want) - if (success) { - requiredEnergy -= want - } + val have = want + (if (Settings.get.ignorePower) 0 else node.changeBuffer(-want)) + requiredEnergy -= have if (requiredEnergy <= 0) { setInventorySlotContents(0, output.get) output = None requiredEnergy = 0 } - ServerPacketSender.sendRobotAssembling(this, success && output.isDefined) + ServerPacketSender.sendRobotAssembling(this, have > 0.5 && output.isDefined) } } diff --git a/src/main/scala/li/cil/oc/common/tileentity/Printer.scala b/src/main/scala/li/cil/oc/common/tileentity/Printer.scala index 9403ed7a7..36fd9a4d5 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Printer.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Printer.scala @@ -228,10 +228,8 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat if (output.isDefined) { val want = math.max(1, math.min(requiredEnergy, Settings.get.printerTickAmount)) - val success = Settings.get.ignorePower || node.tryChangeBuffer(-want) - if (success) { - requiredEnergy -= want - } + val have = want + (if (Settings.get.ignorePower) 0 else node.changeBuffer(-want)) + requiredEnergy -= have if (requiredEnergy <= 0) { val result = getStackInSlot(slotOutput) if (result == null) { @@ -247,7 +245,7 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat requiredEnergy = 0 output = None } - ServerPacketSender.sendPrinting(this, success && output.isDefined) + ServerPacketSender.sendPrinting(this, have > 0.5 && output.isDefined) } if (maxAmountMaterial - amountMaterial >= materialPerItem) { 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 052f6b6bf..4d08792f0 100644 --- a/src/main/scala/li/cil/oc/server/network/Network.scala +++ b/src/main/scala/li/cil/oc/server/network/Network.scala @@ -392,7 +392,7 @@ private class Network private(private val data: mutable.Map[String, Network.Vert } } } - remaining + -remaining } else /* if (delta > 0) */ { var remaining = delta