diff options
author | Alkalus <draknyte1@hotmail.com> | 2017-09-02 15:38:35 +1000 |
---|---|---|
committer | Alkalus <draknyte1@hotmail.com> | 2017-09-02 15:38:35 +1000 |
commit | fc5766c06673ed0cfec511f23fd259f511fabdac (patch) | |
tree | 72084b673a8989c4226ba78d1f0f831e78af9217 /src/Java/gtPlusPlus/core/block/general | |
parent | 84baefc6cf063ade20f65a601c68211ac1bbc084 (diff) | |
download | GT5-Unofficial-fc5766c06673ed0cfec511f23fd259f511fabdac.tar.gz GT5-Unofficial-fc5766c06673ed0cfec511f23fd259f511fabdac.tar.bz2 GT5-Unofficial-fc5766c06673ed0cfec511f23fd259f511fabdac.zip |
$ Fixed tank fluid container handling.
Diffstat (limited to 'src/Java/gtPlusPlus/core/block/general')
-rw-r--r-- | src/Java/gtPlusPlus/core/block/general/FluidTankInfinite.java | 76 |
1 files changed, 58 insertions, 18 deletions
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); +} } |