aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/items/behaviours
diff options
context:
space:
mode:
authorDetrav <witalyezep@gmail.com>2016-12-11 10:36:35 +0300
committerDetrav <witalyezep@gmail.com>2016-12-11 10:36:35 +0300
commitf6b5b72d6d5da94eda33709167ffa731bcf8c843 (patch)
treef81aa3fd53e75f945d0395bb9cdc2ee0f1da8530 /src/main/java/com/detrav/items/behaviours
parent46abca1bb6254c6cd6d971d4ec8ffd2955b43609 (diff)
downloadGT5-Unofficial-f6b5b72d6d5da94eda33709167ffa731bcf8c843.tar.gz
GT5-Unofficial-f6b5b72d6d5da94eda33709167ffa731bcf8c843.tar.bz2
GT5-Unofficial-f6b5b72d6d5da94eda33709167ffa731bcf8c843.zip
+ Added smart plunger with inner fluidstack storage
Diffstat (limited to 'src/main/java/com/detrav/items/behaviours')
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolSmartPlunger.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolSmartPlunger.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolSmartPlunger.java
new file mode 100644
index 0000000000..8278b1e569
--- /dev/null
+++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolSmartPlunger.java
@@ -0,0 +1,88 @@
+package com.detrav.items.behaviours;
+
+import com.detrav.items.DetravMetaGeneratedTool01;
+import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.items.GT_MetaBase_Item;
+import gregtech.api.items.GT_MetaGenerated_Tool;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.items.behaviors.Behaviour_None;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidHandler;
+
+/**
+ * Created by Detrav on 11.12.2016.
+ */
+public class BehaviourDetravToolSmartPlunger extends Behaviour_None {
+
+ protected final int mCosts;
+
+ public BehaviourDetravToolSmartPlunger(int aCosts) {
+ mCosts = aCosts;
+ }
+
+ public boolean onItemUseFirst(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
+ if (aWorld.isRemote) {
+ return false;
+ }
+ FluidStack fs = DetravMetaGeneratedTool01.INSTANCE.getFluidStackFromDetravData(aStack);
+ boolean containts = fs!=null && fs.amount >0;
+ if(containts) {
+ TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+ if ((aTileEntity instanceof IFluidHandler)) {
+ for (ForgeDirection tDirection : ForgeDirection.VALID_DIRECTIONS) {
+ if (((IFluidHandler) aTileEntity).fill(tDirection, fs, false) > 0) {
+ if ((aPlayer.capabilities.isCreativeMode) || (((GT_MetaGenerated_Tool) aItem).doDamage(aStack, this.mCosts))) {
+ int amount = ((IFluidHandler) aTileEntity).fill(tDirection, fs, true);
+ //fs = ((IFluidHandler) aTileEntity).drain(tDirection, 1000, true);
+ fs.amount -= amount;
+ GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(Integer.valueOf(101)), 1.0F, -1.0F, aX, aY, aZ);
+ if (fs.amount > 0)
+ DetravMetaGeneratedTool01.INSTANCE.setFluidStackToDetravData(aStack, fs);
+ else
+ DetravMetaGeneratedTool01.INSTANCE.setFluidStackToDetravData(aStack, null);
+ return true;
+ }
+ }
+ }
+ }
+ }
+ else {
+ TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+ if ((aTileEntity instanceof IFluidHandler)) {
+ for (ForgeDirection tDirection : ForgeDirection.VALID_DIRECTIONS) {
+ if (((IFluidHandler) aTileEntity).drain(tDirection, 1000, false) != null) {
+ if ((aPlayer.capabilities.isCreativeMode) || (((GT_MetaGenerated_Tool) aItem).doDamage(aStack, this.mCosts))) {
+ fs = ((IFluidHandler) aTileEntity).drain(tDirection, 1000, true);
+ GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(Integer.valueOf(101)), 1.0F, -1.0F, aX, aY, aZ);
+ DetravMetaGeneratedTool01.INSTANCE.setFluidStackToDetravData(aStack,fs);
+ return true;
+ }
+ }
+ }
+ }
+ if (aTileEntity instanceof IGregTechTileEntity) {
+ IGregTechTileEntity tTileEntity = (IGregTechTileEntity) aTileEntity;
+ IMetaTileEntity mTileEntity = tTileEntity.getMetaTileEntity();
+ if (mTileEntity instanceof GT_MetaTileEntity_BasicTank) {
+ GT_MetaTileEntity_BasicTank machine = (GT_MetaTileEntity_BasicTank) mTileEntity;
+ if (machine.mFluid != null && machine.mFluid.amount > 0) {
+ fs = machine.mFluid.copy();
+ if (fs.amount > 1000) fs.amount = 1000;
+ machine.mFluid.amount = machine.mFluid.amount - Math.min(machine.mFluid.amount, 1000);
+ DetravMetaGeneratedTool01.INSTANCE.setFluidStackToDetravData(aStack,fs);
+ }
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+} \ No newline at end of file