From 6ce2256b0fb627df927908b1868bceacd6cdff0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Thu, 26 Mar 2015 07:39:52 +0100 Subject: [PATCH] Fixed assembler only working if more than a certain amount of energy was available. Fixed bug in energy change logic. --- .../scala/li/cil/oc/common/tileentity/Assembler.scala | 8 +++----- src/main/scala/li/cil/oc/common/tileentity/Printer.scala | 8 +++----- src/main/scala/li/cil/oc/server/network/Network.scala | 2 +- 3 files changed, 7 insertions(+), 11 deletions(-) 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 06abb09ef..378bbf604 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 a81f33f2c..143d91237 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 e6a1c487f..34b14f91c 100644 --- a/src/main/scala/li/cil/oc/server/network/Network.scala +++ b/src/main/scala/li/cil/oc/server/network/Network.scala @@ -390,7 +390,7 @@ private class Network private(private val data: mutable.Map[String, Network.Vert } } } - remaining + -remaining } else /* if (delta > 0) */ { var remaining = delta