aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2018-07-18 06:42:05 +1000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2018-07-18 06:42:05 +1000
commitb44af9997bc437844a41a5736f1de85a9bd5e2ca (patch)
tree07547d3771ccaa33b3d94ddf1f65f4f487362800 /src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours
parent243346fb454cfeb1a9313ef907243a8a39af8849 (diff)
downloadGT5-Unofficial-b44af9997bc437844a41a5736f1de85a9bd5e2ca.tar.gz
GT5-Unofficial-b44af9997bc437844a41a5736f1de85a9bd5e2ca.tar.bz2
GT5-Unofficial-b44af9997bc437844a41a5736f1de85a9bd5e2ca.zip
+ Added the Base work for a Hand pump, that removes fluids from the input tanks of GT machines.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours')
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Pump.java157
1 files changed, 157 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Pump.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Pump.java
new file mode 100644
index 0000000000..aa3a2973a1
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Pump.java
@@ -0,0 +1,157 @@
+package gtPlusPlus.xmod.gregtech.common.items.behaviours;
+
+import java.util.List;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidStack;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.items.GT_MetaBase_Item;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
+import gregtech.api.util.GT_LanguageManager;
+import gregtech.common.items.behaviors.Behaviour_None;
+import gtPlusPlus.api.objects.Logger;
+
+public class Behaviour_Pump
+extends Behaviour_None {
+
+ private final int mCosts;
+ private FluidStack mStoredFluid;
+ private final String mTooltip = GT_LanguageManager.addStringLocalization("gt.behaviour.pump", "Sucks in Machine Input Fluid tank contents on Rightclick");
+
+ public Behaviour_Pump(final int aCosts) {
+ this.mCosts = aCosts;
+ }
+
+ @Override
+ public boolean onItemUseFirst(final GT_MetaBase_Item aItem, final ItemStack aStack, final EntityPlayer aPlayer, final World aWorld, final int aX, final int aY, final int aZ, final int aSide, final float hitX, final float hitY, final float hitZ) {
+ if (aWorld.isRemote) {
+ return false;
+ }
+ else {
+ final Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) {
+ return false;
+ }
+ //final byte aMeta = (byte) aWorld.getBlockMetadata(aX, aY, aZ);
+ TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+ if (tTileEntity == null) {
+ return false;
+ }
+ if ((tTileEntity instanceof IGregTechTileEntity)) {
+ Logger.INFO("Right Clicking on GT Tile - Behaviour Class.");
+ if (((IGregTechTileEntity) tTileEntity).getTimer() < 50L) {
+ Logger.INFO("Returning False - Behaviour Class. Timer < 50");
+ return false;
+ }
+ else if ((!aWorld.isRemote) && (!((IGregTechTileEntity) tTileEntity).isUseableByPlayer(aPlayer))) {
+ Logger.INFO("Returning True - Behaviour Class. NotUsable()");
+ return true;
+ }
+ else {
+ Logger.INFO("Trying to find Stored Fluid - Behaviour Class.");
+ FluidStack aStored = getStoredFluidOfGTMachine((IGregTechTileEntity)tTileEntity);
+ if (aStored != null) {
+ if (this.mStoredFluid == null) {
+ this.mStoredFluid = aStored;
+ setStoredFluidOfGTMachine((IGregTechTileEntity)tTileEntity);
+ Logger.INFO("Returning True - Behaviour Class.");
+ return true;
+ }
+ }
+ else {
+ Logger.INFO("Found no valid Fluidstack - Behaviour Class.");
+ }
+ }
+
+ }
+ }
+ Logger.INFO("Returning False - Behaviour Class.");
+ return false;
+ }
+
+ public List<String> getAdditionalToolTips(final GT_MetaBase_Item aItem, final List<String> aList, final ItemStack aStack) {
+ aList.add(this.mTooltip);
+ aList.add("Stored Fluid: "+(mStoredFluid != null ? mStoredFluid.getLocalizedName() : "None"));
+ return aList;
+ }
+
+ @Override
+ public ItemStack onItemRightClick(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ // TODO Auto-generated method stub
+ return super.onItemRightClick(aItem, aStack, aWorld, aPlayer);
+ }
+
+ @Override
+ public void onUpdate(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, Entity aPlayer, int aTimer,
+ boolean aIsInHand) {
+ // TODO Auto-generated method stub
+ super.onUpdate(aItem, aStack, aWorld, aPlayer, aTimer, aIsInHand);
+ }
+
+ public FluidStack getStoredFluidOfGTMachine(IGregTechTileEntity aTileEntity) {
+ if (aTileEntity == null) {
+ return null;
+ }
+ final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();;
+ if (aMetaTileEntity == null) {
+ return null;
+ }
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_BasicTank) {
+ Logger.INFO("Tile Was Instanceof BasicTank.");
+ return getStoredFluidOfGTMachine((GT_MetaTileEntity_BasicTank) aMetaTileEntity);
+ }
+ else {
+ return null;
+ }
+ }
+
+ public FluidStack getStoredFluidOfGTMachine(GT_MetaTileEntity_BasicTank aTileEntity) {
+ FluidStack f = aTileEntity.mFluid;
+ Logger.INFO("Returning Fluid stack from tile. Found: "+(f != null ? f.getLocalizedName() : "Nothing"));
+ return f.copy();
+ }
+
+ public boolean setStoredFluidOfGTMachine(IGregTechTileEntity aTileEntity) {
+ if (aTileEntity == null) {
+ return false;
+ }
+ final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();;
+ if (aMetaTileEntity == null) {
+ return false;
+ }
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_BasicTank) {
+ return setStoredFluidOfGTMachine((IGregTechTileEntity) aMetaTileEntity);
+ }
+ else {
+ return false;
+ }
+ }
+
+ public boolean setStoredFluidOfGTMachine(GT_MetaTileEntity_BasicTank aTileEntity) {
+ if (aTileEntity == null) {
+ return false;
+ }
+ final IMetaTileEntity aMetaTileEntity = aTileEntity;
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_BasicTank) {
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_BasicTank){
+ ((GT_MetaTileEntity_BasicTank) aMetaTileEntity).mFluid = null;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public synchronized final FluidStack getStoredFluid() {
+ return mStoredFluid;
+ }
+
+ public synchronized final void setStoredFluid(FluidStack mStoredFluid) {
+ this.mStoredFluid = mStoredFluid;
+ }
+}