From cb91c531e43adbe513c320ff8b5042208f3e14fc Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 10 Dec 2016 13:48:57 -0500 Subject: [PATCH] Fix fluids now flowing after being placed Closes #5 --- .../shadowfacts/funnels/TileEntityFunnel.java | 47 ++++++++++--------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/main/java/net/shadowfacts/funnels/TileEntityFunnel.java b/src/main/java/net/shadowfacts/funnels/TileEntityFunnel.java index 648d716..8589e95 100644 --- a/src/main/java/net/shadowfacts/funnels/TileEntityFunnel.java +++ b/src/main/java/net/shadowfacts/funnels/TileEntityFunnel.java @@ -1,6 +1,8 @@ package net.shadowfacts.funnels; import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; +import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; @@ -63,33 +65,32 @@ public class TileEntityFunnel extends BaseTileEntity implements ITickable { } } - world: - { - tick++; - if (tick % 40 == 0) { + tick++; + if (tick % 40 == 0) { // pickup from world - if (FunnelsConfig.pickupWorldFluids && tank.getFluidAmount() <= tank.getCapacity() - Fluid.BUCKET_VOLUME) { - tick = 0; - if (FluidUtils.isFluidBlock(world, pos.up())) { - FluidStack toDrain = FluidUtils.drainFluidBlock(world, pos.up(), false); - if (toDrain.amount <= tank.getCapacity() - tank.getFluidAmount()) { - tank.fill(FluidUtils.drainFluidBlock(world, pos.up(), true), true); - save(); - break world; - } + if (FunnelsConfig.pickupWorldFluids && tank.getFluidAmount() <= tank.getCapacity() - Fluid.BUCKET_VOLUME) { + tick = 0; + if (FluidUtils.isFluidBlock(world, pos.up())) { + FluidStack toDrain = FluidUtils.drainFluidBlock(world, pos.up(), false); + if (toDrain.amount <= tank.getCapacity() - tank.getFluidAmount()) { + tank.fill(FluidUtils.drainFluidBlock(world, pos.up(), true), true); + save(); + return; } } + } // place in world - if (FunnelsConfig.placeFluidsInWorld && tank.getFluidAmount() >= Fluid.BUCKET_VOLUME) { - FluidStack fluid = tank.getFluid(); - if (fluid.getFluid().canBePlacedInWorld()) { - Block fluidBlock = fluid.getFluid().getBlock(); - BlockPos newPos = pos.offset(world.getBlockState(pos).getValue(BlockFunnel.FACING)); - if (fluidBlock.canPlaceBlockAt(world, newPos)) { - tank.drain(Fluid.BUCKET_VOLUME, true); - save(); - world.setBlockState(newPos, fluidBlock.getDefaultState()); - } + if (FunnelsConfig.placeFluidsInWorld && tank.getFluidAmount() >= Fluid.BUCKET_VOLUME) { + FluidStack fluid = tank.getFluid(); + if (fluid.getFluid().canBePlacedInWorld()) { + Block fluidBlock = fluid.getFluid().getBlock(); + if (fluidBlock instanceof BlockLiquid) fluidBlock = BlockLiquid.getFlowingBlock(fluidBlock.getMaterial(fluidBlock.getDefaultState())); + + BlockPos newPos = pos.offset(world.getBlockState(pos).getValue(BlockFunnel.FACING)); + if (fluidBlock.canPlaceBlockAt(world, newPos)) { + tank.drain(Fluid.BUCKET_VOLUME, true); + save(); + world.setBlockState(newPos, fluidBlock.getDefaultState()); } } }