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 4c3da363c..255286472 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/Robot.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/Robot.scala @@ -284,6 +284,10 @@ class Robot(val isRemote: Boolean) extends traits.Computer with traits.PowerInfo // Ensure we have a node address, because the proxy needs this to initialize // its own node to the same address ours has. api.Network.joinNewNetwork(node) + + // Flush excess energy to other components (mostly relevant for upgrading + // robots from 1.2 to 1.3, to move energy to the experience upgrade). + bot.node.setLocalBufferSize(bot.node.localBufferSize) } } diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala b/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala index f1f26e8c0..8c54afbdb 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeExperience.scala @@ -6,7 +6,7 @@ import li.cil.oc.common.component.ManagedComponent import net.minecraft.nbt.NBTTagCompound class UpgradeExperience extends ManagedComponent { - def node = api.Network.newNode(this, Visibility.Network). + val node = api.Network.newNode(this, Visibility.Network). withComponent("experience"). withConnector(30 * Settings.get.bufferPerLevel). create() @@ -25,7 +25,6 @@ class UpgradeExperience extends ManagedComponent { if (experience >= xpForNextLevel) { updateXpInfo() } - // ServerPacketSender.sendRobotXp(this) } } diff --git a/src/main/scala/li/cil/oc/server/network/Connector.scala b/src/main/scala/li/cil/oc/server/network/Connector.scala index 085d6f37c..26a4df64d 100644 --- a/src/main/scala/li/cil/oc/server/network/Connector.scala +++ b/src/main/scala/li/cil/oc/server/network/Connector.scala @@ -94,7 +94,7 @@ trait Connector extends network.Connector with Node { } localBufferSize = math.max(size, 0) val surplus = math.max(localBuffer - localBufferSize, 0) - localBuffer = math.min(localBuffer, localBufferSize) + changeBuffer(-surplus) d.changeBuffer(surplus) } case _ =>