From f20d728ed72c28a4d90aa0173574270d52fa7317 Mon Sep 17 00:00:00 2001 From: James Mitchell Date: Fri, 12 Aug 2016 01:36:18 -0700 Subject: [PATCH] Fix #3165 Dispensers with buckets can destroy fluid handler blocks (#3180) --- .../fluids/DispenseFluidContainer.java | 2 -- .../java/net/minecraftforge/fluids/FluidUtil.java | 12 +++++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/minecraftforge/fluids/DispenseFluidContainer.java b/src/main/java/net/minecraftforge/fluids/DispenseFluidContainer.java index a92d330a5d..89f23bb010 100644 --- a/src/main/java/net/minecraftforge/fluids/DispenseFluidContainer.java +++ b/src/main/java/net/minecraftforge/fluids/DispenseFluidContainer.java @@ -72,8 +72,6 @@ public class DispenseFluidContainer extends BehaviorDefaultDispenseItem return super.dispenseStack(source, stack); } - world.setBlockToAir(blockpos); - if (--stack.stackSize == 0) { stack.deserializeNBT(result.serializeNBT()); diff --git a/src/main/java/net/minecraftforge/fluids/FluidUtil.java b/src/main/java/net/minecraftforge/fluids/FluidUtil.java index 75af254fcc..82c4373026 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidUtil.java +++ b/src/main/java/net/minecraftforge/fluids/FluidUtil.java @@ -495,10 +495,16 @@ public class FluidUtil return null; } - IFluidHandler targetFluidHandler = FluidUtil.getFluidHandler(worldIn, pos, side); - if (targetFluidHandler != null) + IBlockState state = worldIn.getBlockState(pos); + Block block = state.getBlock(); + + if (block instanceof IFluidBlock || block instanceof BlockLiquid) { - return FluidUtil.tryFillContainer(emptyContainer, targetFluidHandler, Integer.MAX_VALUE, playerIn, true); + IFluidHandler targetFluidHandler = FluidUtil.getFluidHandler(worldIn, pos, side); + if (targetFluidHandler != null) + { + return FluidUtil.tryFillContainer(emptyContainer, targetFluidHandler, Integer.MAX_VALUE, playerIn, true); + } } return null; }