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 2e7d9a369..151f56073 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.util.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 + } } } diff --git a/src/main/scala/li/cil/oc/server/PacketHandler.scala b/src/main/scala/li/cil/oc/server/PacketHandler.scala index bc4e2a152..611204e9f 100644 --- a/src/main/scala/li/cil/oc/server/PacketHandler.scala +++ b/src/main/scala/li/cil/oc/server/PacketHandler.scala @@ -129,7 +129,7 @@ object 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) }