aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/detrav/items
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/detrav/items')
-rw-r--r--src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java52
-rw-r--r--src/main/java/com/detrav/items/behaviours/BehaviourDetravToolSmartPlunger.java88
-rw-r--r--src/main/java/com/detrav/items/processing/ProcessingDetravSmartPlunger.java33
-rw-r--r--src/main/java/com/detrav/items/tools/DetravToolSmartPlunger.java69
4 files changed, 242 insertions, 0 deletions
diff --git a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
index 461ca97fe3..f058afcdcd 100644
--- a/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
+++ b/src/main/java/com/detrav/items/DetravMetaGeneratedTool01.java
@@ -15,6 +15,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ObjectIntIdentityMap;
+import net.minecraftforge.fluids.FluidStack;
import java.util.List;
@@ -29,6 +30,7 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
INSTANCE = this;
addTool(0, "Prospector's Pick", "", new DetravToolProPick(), new Object[]{DetravToolDictNames.craftingToolProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)});
addTool(2, "Portable Anvil", "", new DetravToolPortableAnvil(), new Object[] {DetravToolDictNames.craftingToolPortableAnvil}, new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM,10));
+ addTool(4, "Smart plunger", "", new DetravToolSmartPlunger(),new Object[] {DetravToolDictNames.craftingToolSmartPlunger},new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 8L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 5L));
addTool(100, "Electric Prospector's Scanner (LV)", "", new DetravToolLVElectricProPick(), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
addTool(102, "Electric Prospector's Scanner (MV)", "", new DetravToolMVElectricProPick(), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
addTool(104, "Electric Prospector's Scanner (HV)", "", new DetravToolHVElectricProPick(), new Object[]{DetravToolDictNames.craftingToolElectricProPick, new TC_Aspects.TC_AspectStack(TC_Aspects.INSTRUMENTUM, 2L), new TC_Aspects.TC_AspectStack(TC_Aspects.METALLUM, 4L)}, new TC_Aspects.TC_AspectStack(TC_Aspects.ELECTRUM, 4L));
@@ -73,6 +75,20 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
count = ((int)(getLevel(aStack,7)*100)); if(count > 0) {aList.add(tOffset, "Bonus 7 level: +" + count + "%");tOffset++;}
count = ((int)(getLevel(aStack,8)*100)); if(count > 0) {aList.add(tOffset, "Bonus 8 level: +" + count + "%");tOffset++;}
break;
+ case 4:
+ aList.add(tOffset + 0, EnumChatFormatting.WHITE + "Durability: " + EnumChatFormatting.GREEN + (tMaxDamage - getToolDamage(aStack)) + " / " + tMaxDamage + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 1, EnumChatFormatting.WHITE + tMaterial.mDefaultLocalName + EnumChatFormatting.YELLOW + " lvl " + getHarvestLevel(aStack, "") + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 2, "It can suck in fluid");
+ FluidStack stack = getFluidStackFromDetravData(aStack);
+ if(stack!=null && stack.amount >0)
+ {
+ aList.add(tOffset +3, "Fluid: "+stack.getLocalizedName()+" : "+stack.amount);
+ }
+ else
+ {
+ aList.add(tOffset +3, "Fluid: empty");
+ }
+ break;
case 100:
case 101:
case 102:
@@ -167,6 +183,7 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
}
}
+
private boolean hasnolevel(NBTTagCompound detravLevel)
{
for(int i=0;i<9;i++)
@@ -221,6 +238,41 @@ public class DetravMetaGeneratedTool01 extends GT_MetaGenerated_Tool {
return ItemStack.loadItemStackFromNBT(detravData);
}
+
+ public boolean setFluidStackToDetravData(ItemStack aStack, FluidStack what)
+ {
+ if(aStack == null) return false;
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if(aNBT == null) {
+ aNBT = new NBTTagCompound();
+ NBTTagCompound detravData = new NBTTagCompound();
+ aNBT.setTag("DetravData", detravData);
+ aStack.setTagCompound(aNBT);
+ }
+ {
+ NBTTagCompound detravData = aNBT.getCompoundTag("DetravData");
+ if (detravData == null || detravData.getShort("id") == 0) {
+ detravData = new NBTTagCompound();
+ aNBT.setTag("DetravData", detravData);
+ }
+ if (what == null)
+ aNBT.removeTag("DetravData");
+ else
+ what.writeToNBT(detravData);
+ return true;
+ }
+ }
+
+ public FluidStack getFluidStackFromDetravData(ItemStack aStack)
+ {
+ if(aStack == null) return null;
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if(aNBT ==null) return null;
+ NBTTagCompound detravData = aNBT.getCompoundTag("DetravData");
+ if(detravData == null) return null;
+ return FluidStack.loadFluidStackFromNBT(detravData);
+ }
+
public void getDetravSubItems(Item item, CreativeTabs detravCreativeTab, List list) {
ItemStack dStack;
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
diff --git a/src/main/java/com/detrav/items/processing/ProcessingDetravSmartPlunger.java b/src/main/java/com/detrav/items/processing/ProcessingDetravSmartPlunger.java
new file mode 100644
index 0000000000..e9f76590d6
--- /dev/null
+++ b/src/main/java/com/detrav/items/processing/ProcessingDetravSmartPlunger.java
@@ -0,0 +1,33 @@
+package com.detrav.items.processing;
+
+import com.detrav.items.DetravMetaGeneratedTool01;
+import gregtech.api.enums.*;
+import gregtech.api.interfaces.IOreRecipeRegistrator;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import ic2.core.Ic2Items;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+
+/**
+ * Created by Detrav on 11.12.2016.
+ */
+public class ProcessingDetravSmartPlunger implements IOreRecipeRegistrator {
+ public ProcessingDetravSmartPlunger() {
+ OrePrefixes.toolHeadHammer.add(this);
+ }
+
+ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName, ItemStack aStack) {
+ if ((aMaterial != Materials.Stone) && (aMaterial != Materials.Flint)) {
+ if (aMaterial != Materials.Rubber)
+ GT_ModHandler.addCraftingRecipe(
+ DetravMetaGeneratedTool01.INSTANCE.getToolWithStats(4,1,aMaterial,aMaterial,null),
+ GT_ModHandler.RecipeBits.DO_NOT_CHECK_FOR_COLLISIONS | GT_ModHandler.RecipeBits.BUFFERED,
+ new Object[]{"xRR", " CR", "S f",
+ Character.valueOf('S'), OrePrefixes.stick.get(aMaterial),
+ Character.valueOf('R'), OrePrefixes.plate.get(Materials.Rubber),
+ Character.valueOf('C'), Ic2Items.cell});
+ }
+ }
+}
diff --git a/src/main/java/com/detrav/items/tools/DetravToolSmartPlunger.java b/src/main/java/com/detrav/items/tools/DetravToolSmartPlunger.java
new file mode 100644
index 0000000000..a157ad5460
--- /dev/null
+++ b/src/main/java/com/detrav/items/tools/DetravToolSmartPlunger.java
@@ -0,0 +1,69 @@
+package com.detrav.items.tools;
+
+import com.detrav.items.behaviours.BehaviourDetravToolSmartPlunger;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.IIconContainer;
+import gregtech.api.interfaces.IItemBehaviour;
+import gregtech.api.items.GT_MetaGenerated_Tool;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.items.behaviors.Behaviour_Plunger_Fluid;
+import gregtech.common.items.behaviors.Behaviour_Plunger_Item;
+import gregtech.common.tools.GT_Tool;
+import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IChatComponent;
+
+/**
+ * Created by Detrav on 11.12.2016.
+ */
+public class DetravToolSmartPlunger
+ extends GT_Tool {
+ public float getBaseDamage() {
+ return 1.25F;
+ }
+
+ public float getMaxDurabilityMultiplier() {
+ return 0.25F;
+ }
+
+ public String getCraftingSound() {
+ return (String) GregTech_API.sSoundList.get(Integer.valueOf(101));
+ }
+
+ public String getEntityHitSound() {
+ return (String) GregTech_API.sSoundList.get(Integer.valueOf(101));
+ }
+
+ public String getBreakingSound() {
+ return (String) GregTech_API.sSoundList.get(Integer.valueOf(0));
+ }
+
+ public String getMiningSound() {
+ return (String) GregTech_API.sSoundList.get(Integer.valueOf(101));
+ }
+
+ public boolean isMinableBlock(Block aBlock, byte aMetaData) {
+ String tTool = aBlock.getHarvestTool(aMetaData);
+ return ((tTool != null) && tTool.equals("plunger"));
+ }
+
+ public IIconContainer getIcon(boolean aIsToolHead, ItemStack aStack) {
+ return aIsToolHead ? Textures.ItemIcons.PLUNGER : null;
+ }
+
+ public short[] getRGBa(boolean aIsToolHead, ItemStack aStack) {
+ return aIsToolHead ? GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mRGBa : GT_MetaGenerated_Tool.getSecondaryMaterial(aStack).mRGBa;
+ }
+
+ public void onStatsAddedToTool(GT_MetaGenerated_Tool aItem, int aID) {
+ aItem.addItemBehavior(aID, new BehaviourDetravToolSmartPlunger(getToolDamagePerDropConversion()));
+ }
+
+ public IChatComponent getDeathMessage(EntityLivingBase aPlayer, EntityLivingBase aEntity) {
+ return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " got stuck trying to escape through a Pipe while fighting " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE);
+ }
+} \ No newline at end of file