From 0cb24f9c4f22601d8c799a865dd1d900d859085d Mon Sep 17 00:00:00 2001 From: payonel Date: Thu, 20 Sep 2018 22:49:09 -0700 Subject: [PATCH 1/2] simple nil check on drain from empty fluid tank closes #2291 --- src/main/scala/li/cil/oc/util/FluidUtils.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/util/FluidUtils.scala b/src/main/scala/li/cil/oc/util/FluidUtils.scala index 804be4a6e..91cc8a755 100644 --- a/src/main/scala/li/cil/oc/util/FluidUtils.scala +++ b/src/main/scala/li/cil/oc/util/FluidUtils.scala @@ -40,8 +40,11 @@ object FluidUtils { *

* This returns true if some fluid was transferred. */ - def transferBetweenFluidHandlers(source: IFluidHandler, sourceSide: ForgeDirection, sink: IFluidHandler, sinkSide: ForgeDirection, limit: Int = FluidContainerRegistry.BUCKET_VOLUME) = { + def transferBetweenFluidHandlers(source: IFluidHandler, sourceSide: ForgeDirection, sink: IFluidHandler, sinkSide: ForgeDirection, limit: Int = FluidContainerRegistry.BUCKET_VOLUME) : Int = { val drained = source.drain(sourceSide, limit, false) + if (drained == null) { + return 0 + } val filled = sink.fill(sinkSide, drained, false) sink.fill(sinkSide, source.drain(sourceSide, filled, true), true) } From 515645b181c3c8efb6f8aca468d420bb974a9f38 Mon Sep 17 00:00:00 2001 From: payonel Date: Fri, 21 Sep 2018 18:40:23 -0700 Subject: [PATCH 2/2] remove unnecessary onBlockHarvested call since 1.10 block.removedByPlayer now calls onBlockHarvested for us Interestingly enough, SkullBlock generates its drop items in a custom onBlockHarvested override, and thus we were duplicating it closes #2624 --- src/main/scala/li/cil/oc/server/agent/Player.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala/li/cil/oc/server/agent/Player.scala b/src/main/scala/li/cil/oc/server/agent/Player.scala index 576f55f2a..1c39eb3b3 100644 --- a/src/main/scala/li/cil/oc/server/agent/Player.scala +++ b/src/main/scala/li/cil/oc/server/agent/Player.scala @@ -460,7 +460,6 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc val te = world.getTileEntity(pos) val canHarvest = block.canHarvestBlock(world, pos, this) - block.onBlockHarvested(world, pos, state, this) if (block.removedByPlayer(state, world, pos, this, block.canHarvestBlock(world, pos, this))) { block.onBlockDestroyedByPlayer(world, pos, state) if (canHarvest) {