From 1d4842ebc224a5b20bd3c27fdd0c07df5fc3be92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 25 Jun 2014 13:22:17 +0200 Subject: [PATCH 1/2] Fixes #359. --- src/main/scala/li/cil/oc/server/PacketHandler.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/server/PacketHandler.scala b/src/main/scala/li/cil/oc/server/PacketHandler.scala index 76ff9c09e..90708a86c 100644 --- a/src/main/scala/li/cil/oc/server/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/server/PacketHandler.scala @@ -122,7 +122,7 @@ class PacketHandler extends CommonPacketHandler { def onPetVisibility(p: PacketParser) { p.player match { - case player: EntityPlayerMP if player != Minecraft.getMinecraft.thePlayer => + case player: EntityPlayerMP => if (if (p.readBoolean()) { PetVisibility.hidden.remove(player.getCommandSenderName) } From ac8b490229ee8361d54245a9b03d8d93f7d47675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 25 Jun 2014 13:35:35 +0200 Subject: [PATCH 2/2] Brought back the workaround for IC2 not giving a damn about the returned value from energy injection (and therefore energy getting lost). Closes #348. --- .../traits/power/IndustrialCraft2.scala | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala index c34c8fbe6..8c0ce3e70 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/power/IndustrialCraft2.scala @@ -11,6 +11,8 @@ import net.minecraftforge.common.ForgeDirection trait IndustrialCraft2 extends Common with IEnergySink { var addedToPowerGrid = false + private var lastInjectedAmount = 0.0 + private lazy val useIndustrialCraft2Power = isServer && !Settings.get.ignorePower && Mods.IndustrialCraft2.isAvailable // ----------------------------------------------------------------------- // @@ -36,8 +38,10 @@ trait IndustrialCraft2 extends Common with IEnergySink { def acceptsEnergyFrom(emitter: net.minecraft.tileentity.TileEntity, direction: ForgeDirection) = canConnectPower(direction) @Optional.Method(modid = "IC2") - def injectEnergyUnits(directionFrom: ForgeDirection, amount: Double) = + def injectEnergyUnits(directionFrom: ForgeDirection, amount: Double) = { + lastInjectedAmount = amount amount - tryChangeBuffer(directionFrom, amount * Settings.ratioIC2) / Settings.ratioIC2 + } @Optional.Method(modid = "IC2") def getMaxSafeInput = Integer.MAX_VALUE @@ -45,6 +49,17 @@ trait IndustrialCraft2 extends Common with IEnergySink { @Optional.Method(modid = "IC2") def demandedEnergyUnits = { if (Settings.get.ignorePower || isClient) 0 - else ForgeDirection.VALID_DIRECTIONS.map(side => globalBufferSize(side) - globalBuffer(side)).max / Settings.ratioIC2 + else { + var force = false + val demand = ForgeDirection.VALID_DIRECTIONS.map(side => { + val size = globalBufferSize(side) + val value = globalBuffer(side) + val space = size - value + force = force || (space > size / 2) + space + }).max / Settings.ratioIC2 + if (force || lastInjectedAmount <= 0 || demand >= lastInjectedAmount) demand + else 0 + } } }