aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/block/general/FluidTankInfinite.java76
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/general/TileEntityInfiniteFluid.java9
-rw-r--r--src/Java/gtPlusPlus/core/util/player/PlayerUtils.java19
3 files changed, 84 insertions, 20 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);
+}
}
diff --git a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityInfiniteFluid.java b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityInfiniteFluid.java
index 7a5be32ef4..3b50fe4dea 100644
--- a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityInfiniteFluid.java
+++ b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityInfiniteFluid.java
@@ -28,6 +28,7 @@ public class TileEntityInfiniteFluid extends TileEntity implements IFluidHandler
}
public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {
+ needsUpdate = true;
return this.tank.drain(resource.amount, doDrain);
}
@@ -72,6 +73,7 @@ public class TileEntityInfiniteFluid extends TileEntity implements IFluidHandler
}
public float getAdjustedVolume() {
+ needsUpdate = true;
float amount = tank.getFluidAmount();
float capacity = tank.getCapacity();
float volume = (amount / capacity) * 0.8F;
@@ -79,6 +81,13 @@ public class TileEntityInfiniteFluid extends TileEntity implements IFluidHandler
}
public void updateEntity() {
+
+ if (this.tank.getFluid() != null){
+ FluidStack bigStorage = this.tank.getFluid();
+ bigStorage.amount = this.tank.getCapacity();
+ this.tank.setFluid(bigStorage);
+ }
+
if (needsUpdate) {
if (this.tank.getFluid() != null){
diff --git a/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java b/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java
index 9c43b39f92..543fd65b71 100644
--- a/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java
+++ b/src/Java/gtPlusPlus/core/util/player/PlayerUtils.java
@@ -101,7 +101,10 @@ public class PlayerUtils {
public static ItemStack getItemStackInPlayersHand(final EntityPlayer player){
ItemStack heldItem = null;
try{heldItem = player.getHeldItem();
- }catch(final NullPointerException e){return null;}
+ }catch(final NullPointerException e){
+ e.printStackTrace();
+ return null;
+ }
if (heldItem != null){
return heldItem;
}
@@ -109,7 +112,7 @@ public class PlayerUtils {
}
@SideOnly(Side.CLIENT)
- public static Item getItemInPlayersHand(){
+ public static Item getItemInPlayersHandClient(){
final Minecraft mc = Minecraft.getMinecraft();
Item heldItem = null;
@@ -123,6 +126,18 @@ public class PlayerUtils {
return null;
}
+ public static Item getItemInPlayersHand(EntityPlayer player){
+ Item heldItem = null;
+ try{heldItem = player.getHeldItem().getItem();
+ }catch(final NullPointerException e){return null;}
+
+ if (heldItem != null){
+ return heldItem;
+ }
+
+ return null;
+ }
+
public final static EntityPlayer getPlayerEntityByName(String aPlayerName){
EntityPlayer player = PlayerUtils.getPlayer(aPlayerName);
if (player != null){