From fc5766c06673ed0cfec511f23fd259f511fabdac Mon Sep 17 00:00:00 2001 From: Alkalus Date: Sat, 2 Sep 2017 15:38:35 +1000 Subject: $ Fixed tank fluid container handling. --- .../core/block/general/FluidTankInfinite.java | 76 +++++++++++++++++----- 1 file changed, 58 insertions(+), 18 deletions(-) (limited to 'src/Java/gtPlusPlus/core/block/general') diff --git a/src/Java/gtPlusPlus/core/block/general/FluidTankInfinite.java b/src/Java/gtPlusPlus/core/block/general/FluidTankInfinite.java index 722a915d58..fe698dfdd0 100644 --- a/src/Java/gtPlusPlus/core/block/general/FluidTankInfinite.java +++ b/src/Java/gtPlusPlus/core/block/general/FluidTankInfinite.java @@ -6,16 +6,21 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.tileentities.general.TileEntityFishTrap; import gtPlusPlus.core.tileentities.general.TileEntityInfiniteFluid; import gtPlusPlus.core.util.player.PlayerUtils; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidContainerItem; +import net.minecraftforge.fluids.ItemFluidContainer; public class FluidTankInfinite extends BlockContainer { @@ -68,30 +73,65 @@ public class FluidTankInfinite extends BlockContainer { else { TileEntityInfiniteFluid tank = (TileEntityInfiniteFluid) world.getTileEntity(x, y, z); if (tank != null){ + Item handItem; + try { + handItem = player.getHeldItem().getItem(); + } + catch (Throwable t){ + handItem = null; + } + if (handItem != null && (handItem instanceof IFluidContainerItem || handItem instanceof ItemFluidContainer || FluidContainerRegistry.isFilledContainer(player.getHeldItem()))){ + if (tank.tank.getFluid() == null){ + try { + if (!FluidContainerRegistry.isFilledContainer(player.getHeldItem())){ + ItemStack handItemStack = player.getHeldItem(); + IFluidContainerItem container = (IFluidContainerItem) handItem; + FluidStack containerFluid = container.getFluid(handItemStack); + container.drain(handItemStack, container.getFluid(handItemStack).amount, true); + tank.tank.setFluid(containerFluid); + } + else { + ItemStack handItemStack = player.getHeldItem(); + FluidContainerRegistry.drainFluidContainer(handItemStack); + FluidStack containerFluid = FluidContainerRegistry.getFluidForFilledItem(handItemStack); + ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(handItemStack); + player.setItemInUse(emptyContainer, 0); + + tank.tank.setFluid(containerFluid); + } + } + catch (Throwable t){ + t.printStackTrace(); + } + } + + } + if (tank.tank.getFluid() != null){ PlayerUtils.messagePlayer(player, "This tank contains "+tank.tank.getFluidAmount()+"L of "+tank.tank.getFluid().getLocalizedName()); } } - return true; } + return true; +} - @Override - public int getRenderBlockPass() { - return 1; - } +@Override +public int getRenderBlockPass() { + return 1; +} - @Override - public boolean isOpaqueCube() { - return false; - } +@Override +public boolean isOpaqueCube() { + return false; +} - @Override - public TileEntity createNewTileEntity(final World world, final int p_149915_2_) { - return new TileEntityInfiniteFluid(); - } +@Override +public TileEntity createNewTileEntity(final World world, final int p_149915_2_) { + return new TileEntityInfiniteFluid(); +} - @Override - public void onBlockAdded(World world, int x, int y, int z) { - super.onBlockAdded(world, x, y, z); - } +@Override +public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x, y, z); +} } -- cgit