From 9353aa711b1d750ff945acdfed2d3b956291b615 Mon Sep 17 00:00:00 2001 From: Shawn Buckley Date: Wed, 21 Oct 2015 22:06:25 -0400 Subject: Reformat code --- .../gregtech/api/items/GT_CoolantCellIC_Item.java | 118 +-- .../gregtech/api/items/GT_CoolantCell_Item.java | 118 +-- .../gregtech/api/items/GT_EnergyArmor_Item.java | 412 ++++---- .../java/gregtech/api/items/GT_Generic_Block.java | 21 +- .../java/gregtech/api/items/GT_Generic_Item.java | 200 ++-- .../java/gregtech/api/items/GT_MetaBase_Item.java | 1103 +++++++++++--------- .../gregtech/api/items/GT_MetaGenerated_Item.java | 568 +++++----- .../api/items/GT_MetaGenerated_Item_X01.java | 267 ++--- .../api/items/GT_MetaGenerated_Item_X32.java | 275 ++--- .../gregtech/api/items/GT_MetaGenerated_Tool.java | 925 ++++++++-------- .../api/items/GT_RadioactiveCellIC_Item.java | 261 +++-- .../api/items/GT_RadioactiveCell_Item.java | 264 +++-- .../gregtech/api/items/GT_SolderingTool_Item.java | 44 +- .../java/gregtech/api/items/GT_Spray_Bug_Item.java | 79 +- .../gregtech/api/items/GT_Spray_Foam_Item.java | 239 +++-- .../gregtech/api/items/GT_Spray_Hardener_Item.java | 97 +- .../api/items/GT_Spray_Hydration_Item.java | 66 +- .../java/gregtech/api/items/GT_Spray_Ice_Item.java | 86 +- .../gregtech/api/items/GT_Spray_Pepper_Item.java | 47 +- src/main/java/gregtech/api/items/GT_Tool_Item.java | 32 +- 20 files changed, 2655 insertions(+), 2567 deletions(-) (limited to 'src/main/java/gregtech/api/items') diff --git a/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java b/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java index 2c714566ab..0d8c9a673a 100644 --- a/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java +++ b/src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java @@ -6,71 +6,59 @@ import ic2.api.reactor.IReactorComponent; import net.minecraft.item.ItemStack; public class GT_CoolantCellIC_Item - extends GT_CoolantCell_Item - implements IReactorComponent -{ - public GT_CoolantCellIC_Item(String aUnlocalized, String aEnglish, int aMaxStore) - { - super(aUnlocalized, aEnglish, aMaxStore); - } - - public void processChamber(IReactor aReactor, ItemStack aStack, int x, int y, boolean aHeatRun) {} - - public boolean acceptUraniumPulse(IReactor aReactor, ItemStack aStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY, boolean aHeatRun) - { - return false; - } - - public boolean canStoreHeat(IReactor aReactor, ItemStack aStack, int x, int y) - {if(aReactor.isFluidCooled()&&(getControlTagOfStack(aStack))!=0){ - return false; - } - return true; - } - - public int getMaxHeat(IReactor aReactor, ItemStack aStack, int x, int y) - { - return this.heatStorage; - } - - public int getCurrentHeat(IReactor aReactor, ItemStack aStack, int x, int y) - { - return getHeatOfStack(aStack); - } - - public float influenceExplosion(IReactor aReactor, ItemStack aStack) - { - return 1.0F + this.heatStorage / 30000.0F; - } - - public int alterHeat(IReactor aReactor, ItemStack aStack, int x, int y, int aHeat) - { - int tHeat = getHeatOfStack(aStack); - if ((tHeat == 0) && (getControlTagOfStack(aStack) != 0)) { - setControlTagOfStack(aStack, 0); - } - tHeat += aHeat; - if (tHeat > this.heatStorage) - { - aReactor.setItemAt(x, y, (ItemStack)null); - aHeat = this.heatStorage - tHeat + 1; + extends GT_CoolantCell_Item + implements IReactorComponent { + public GT_CoolantCellIC_Item(String aUnlocalized, String aEnglish, int aMaxStore) { + super(aUnlocalized, aEnglish, aMaxStore); } - else - { - if (tHeat < 0) - { - aHeat = tHeat; - tHeat = 0; - } - else - { - aHeat = 0; - } - if ((tHeat > 0) && (getControlTagOfStack(aStack) == 0) && (!aReactor.isFluidCooled())) { - setControlTagOfStack(aStack, 1); - } - setHeatForStack(aStack, tHeat); + + public void processChamber(IReactor aReactor, ItemStack aStack, int x, int y, boolean aHeatRun) { + } + + public boolean acceptUraniumPulse(IReactor aReactor, ItemStack aStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY, boolean aHeatRun) { + return false; + } + + public boolean canStoreHeat(IReactor aReactor, ItemStack aStack, int x, int y) { + if (aReactor.isFluidCooled() && (getControlTagOfStack(aStack)) != 0) { + return false; + } + return true; + } + + public int getMaxHeat(IReactor aReactor, ItemStack aStack, int x, int y) { + return this.heatStorage; + } + + public int getCurrentHeat(IReactor aReactor, ItemStack aStack, int x, int y) { + return getHeatOfStack(aStack); + } + + public float influenceExplosion(IReactor aReactor, ItemStack aStack) { + return 1.0F + this.heatStorage / 30000.0F; + } + + public int alterHeat(IReactor aReactor, ItemStack aStack, int x, int y, int aHeat) { + int tHeat = getHeatOfStack(aStack); + if ((tHeat == 0) && (getControlTagOfStack(aStack) != 0)) { + setControlTagOfStack(aStack, 0); + } + tHeat += aHeat; + if (tHeat > this.heatStorage) { + aReactor.setItemAt(x, y, (ItemStack) null); + aHeat = this.heatStorage - tHeat + 1; + } else { + if (tHeat < 0) { + aHeat = tHeat; + tHeat = 0; + } else { + aHeat = 0; + } + if ((tHeat > 0) && (getControlTagOfStack(aStack) == 0) && (!aReactor.isFluidCooled())) { + setControlTagOfStack(aStack, 1); + } + setHeatForStack(aStack, tHeat); + } + return aHeat; } - return aHeat; - } } diff --git a/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java b/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java index 172ccccc15..e6d87cfdd6 100644 --- a/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java +++ b/src/main/java/gregtech/api/items/GT_CoolantCell_Item.java @@ -2,80 +2,68 @@ package gregtech.api.items; import gregtech.api.GregTech_API; import ic2.core.util.StackUtil; - -import java.util.List; - import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; +import java.util.List; + public class GT_CoolantCell_Item - extends GT_Generic_Item -{ - protected int heatStorage; - - public GT_CoolantCell_Item(String aUnlocalized, String aEnglish, int aMaxStore) - { - super(aUnlocalized, aEnglish, null); - this.setMaxStackSize(1); - this.setMaxDamage(100); - setNoRepair(); - this.heatStorage = aMaxStore; - this.setCreativeTab(GregTech_API.TAB_GREGTECH); - } - - protected void setHeatForStack(ItemStack aStack, int aHeat) - { - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT == null) - { - tNBT = new NBTTagCompound(); - aStack.setTagCompound(tNBT); + extends GT_Generic_Item { + protected int heatStorage; + + public GT_CoolantCell_Item(String aUnlocalized, String aEnglish, int aMaxStore) { + super(aUnlocalized, aEnglish, null); + this.setMaxStackSize(1); + this.setMaxDamage(100); + setNoRepair(); + this.heatStorage = aMaxStore; + this.setCreativeTab(GregTech_API.TAB_GREGTECH); } - tNBT.setInteger("heat", aHeat); - if (this.heatStorage > 0) - { - double var4 = (double)aHeat / (double)this.heatStorage; - int var6 = (int)(aStack.getMaxDamage() * var4); - if (var6 >= aStack.getMaxDamage()) { - var6 = aStack.getMaxDamage() - 1; - } - aStack.setItemDamage(var6); + + protected static int getHeatOfStack(ItemStack aStack) { + NBTTagCompound tNBT = aStack.getTagCompound(); + if (tNBT == null) { + tNBT = new NBTTagCompound(); + aStack.setTagCompound(tNBT); + } + return tNBT.getInteger("heat"); } - } - - public void addAdditionalToolTips(List aList, ItemStack aStack) - { - super.addAdditionalToolTips(aList, aStack); - aList.add("Stored Heat: " + getHeatOfStack(aStack)); - switch (getControlTagOfStack(aStack)) - { - case 1: - aList.add(StatCollector.translateToLocal("ic2.reactoritem.heatwarning.line1")); - aList.add(StatCollector.translateToLocal("ic2.reactoritem.heatwarning.line2")); + + protected void setHeatForStack(ItemStack aStack, int aHeat) { + NBTTagCompound tNBT = aStack.getTagCompound(); + if (tNBT == null) { + tNBT = new NBTTagCompound(); + aStack.setTagCompound(tNBT); + } + tNBT.setInteger("heat", aHeat); + if (this.heatStorage > 0) { + double var4 = (double) aHeat / (double) this.heatStorage; + int var6 = (int) (aStack.getMaxDamage() * var4); + if (var6 >= aStack.getMaxDamage()) { + var6 = aStack.getMaxDamage() - 1; + } + aStack.setItemDamage(var6); } - } - - protected static int getHeatOfStack(ItemStack aStack) - { - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT == null) - { - tNBT = new NBTTagCompound(); - aStack.setTagCompound(tNBT); } - return tNBT.getInteger("heat"); - } - - public int getControlTagOfStack(ItemStack stack) - { - NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); - return nbtData.getInteger("tag"); + + public void addAdditionalToolTips(List aList, ItemStack aStack) { + super.addAdditionalToolTips(aList, aStack); + aList.add("Stored Heat: " + getHeatOfStack(aStack)); + switch (getControlTagOfStack(aStack)) { + case 1: + aList.add(StatCollector.translateToLocal("ic2.reactoritem.heatwarning.line1")); + aList.add(StatCollector.translateToLocal("ic2.reactoritem.heatwarning.line2")); + } } - - public void setControlTagOfStack(ItemStack stack, int tag) - { - NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); - nbtData.setInteger("tag", tag); + + public int getControlTagOfStack(ItemStack stack) { + NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); + return nbtData.getInteger("tag"); + } + + public void setControlTagOfStack(ItemStack stack, int tag) { + NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack); + nbtData.setInteger("tag", tag); } } diff --git a/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java b/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java index 4cbfd5445d..6e3c6df6e1 100644 --- a/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java +++ b/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java @@ -1,15 +1,11 @@ package gregtech.api.items; -import static gregtech.api.enums.GT_Values.RES_PATH_ITEM; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_Utility; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; @@ -26,116 +22,119 @@ import net.minecraft.world.World; import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingFallEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static gregtech.api.enums.GT_Values.RES_PATH_ITEM; public class GT_EnergyArmor_Item extends ItemArmor implements ISpecialArmor { - public int mCharge, mTransfer, mTier, mDamageEnergyCost, mSpecials; - public boolean mChargeProvider; - public double mArmorAbsorbtionPercentage; - public static Map jumpChargeMap = new HashMap(); - - public GT_EnergyArmor_Item(int aID, String aUnlocalized, String aEnglish, int aCharge, int aTransfer, int aTier, int aDamageEnergyCost, int aSpecials, double aArmorAbsorbtionPercentage, boolean aChargeProvider, int aType, int aArmorIndex) { - super(ArmorMaterial.DIAMOND, aArmorIndex, aType); - setMaxStackSize(1); - setMaxDamage(100); - setNoRepair(); - setUnlocalizedName(aUnlocalized); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".name", aEnglish); - mCharge = Math.max(1, aCharge); - mTransfer = Math.max(1, aTransfer); - mTier = Math.max(1, aTier); - mSpecials = aSpecials; - mChargeProvider = aChargeProvider; - mDamageEnergyCost = Math.max(0, aDamageEnergyCost); - mArmorAbsorbtionPercentage = aArmorAbsorbtionPercentage; - - setCreativeTab(GregTech_API.TAB_GREGTECH); - + public int mCharge, mTransfer, mTier, mDamageEnergyCost, mSpecials; + public boolean mChargeProvider; + public double mArmorAbsorbtionPercentage; + + public GT_EnergyArmor_Item(int aID, String aUnlocalized, String aEnglish, int aCharge, int aTransfer, int aTier, int aDamageEnergyCost, int aSpecials, double aArmorAbsorbtionPercentage, boolean aChargeProvider, int aType, int aArmorIndex) { + super(ArmorMaterial.DIAMOND, aArmorIndex, aType); + setMaxStackSize(1); + setMaxDamage(100); + setNoRepair(); + setUnlocalizedName(aUnlocalized); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".name", aEnglish); + mCharge = Math.max(1, aCharge); + mTransfer = Math.max(1, aTransfer); + mTier = Math.max(1, aTier); + mSpecials = aSpecials; + mChargeProvider = aChargeProvider; + mDamageEnergyCost = Math.max(0, aDamageEnergyCost); + mArmorAbsorbtionPercentage = aArmorAbsorbtionPercentage; + + setCreativeTab(GregTech_API.TAB_GREGTECH); + MinecraftForge.EVENT_BUS.register(this); - } - - @Override - public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { - ItemStack tStack = aPlayer.inventory.armorInventory[3-armorType]; - if (tStack != null) { - for (int i = 0; i < 9; i++) { - if (aPlayer.inventory.mainInventory[i] == aStack) { - aPlayer.inventory.armorInventory[3-armorType] = aPlayer.inventory.mainInventory[i]; - aPlayer.inventory.mainInventory[i] = tStack; - return tStack; - } - } - } - return super.onItemRightClick(aStack, aWorld, aPlayer); - } - - @Override + } + + private static void setCharge(ItemStack aStack) { + NBTTagCompound tNBT = aStack.getTagCompound(); + if (tNBT == null) tNBT = new NBTTagCompound(); + tNBT.setInteger("charge", 1000000000); + aStack.setTagCompound(tNBT); + } + + @Override + public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + ItemStack tStack = aPlayer.inventory.armorInventory[3 - armorType]; + if (tStack != null) { + for (int i = 0; i < 9; i++) { + if (aPlayer.inventory.mainInventory[i] == aStack) { + aPlayer.inventory.armorInventory[3 - armorType] = aPlayer.inventory.mainInventory[i]; + aPlayer.inventory.mainInventory[i] = tStack; + return tStack; + } + } + } + return super.onItemRightClick(aStack, aWorld, aPlayer); + } + + @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister aIconRegister) { this.itemIcon = aIconRegister.registerIcon(RES_PATH_ITEM + getUnlocalizedName()); } - - @Override + + @Override public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - aList.add("Tier: " + mTier); - if ((mSpecials & 1) != 0) aList.add("Rebreather"); - if ((mSpecials & 2) != 0) aList.add("Inertia Damper"); - if ((mSpecials & 4) != 0) aList.add("Food Replicator"); - if ((mSpecials & 8) != 0) aList.add("Medicine Module"); - if ((mSpecials & 16) != 0) aList.add("Lamp"); - if ((mSpecials & 32) != 0) aList.add("Solarpanel"); - if ((mSpecials & 64) != 0) aList.add("Extinguisher Module"); - if ((mSpecials & 128) != 0) aList.add("Jump Booster"); - if ((mSpecials & 256) != 0) aList.add("Speed Booster"); - if ((mSpecials & 512) != 0) aList.add("Invisibility Field"); - if ((mSpecials & 1024) != 0) aList.add("Infinite Charge"); - } - - private static void setCharge(ItemStack aStack) { - NBTTagCompound tNBT = aStack.getTagCompound(); - if (tNBT == null) tNBT = new NBTTagCompound(); - tNBT.setInteger("charge", 1000000000); - aStack.setTagCompound(tNBT); + aList.add("Tier: " + mTier); + if ((mSpecials & 1) != 0) aList.add("Rebreather"); + if ((mSpecials & 2) != 0) aList.add("Inertia Damper"); + if ((mSpecials & 4) != 0) aList.add("Food Replicator"); + if ((mSpecials & 8) != 0) aList.add("Medicine Module"); + if ((mSpecials & 16) != 0) aList.add("Lamp"); + if ((mSpecials & 32) != 0) aList.add("Solarpanel"); + if ((mSpecials & 64) != 0) aList.add("Extinguisher Module"); + if ((mSpecials & 128) != 0) aList.add("Jump Booster"); + if ((mSpecials & 256) != 0) aList.add("Speed Booster"); + if ((mSpecials & 512) != 0) aList.add("Invisibility Field"); + if ((mSpecials & 1024) != 0) aList.add("Infinite Charge"); } - + @Override - public void onArmorTick(World aWorld, EntityPlayer aPlayer, ItemStack aStack) { - if (mSpecials == 0) return; - - if (!aPlayer.worldObj.isRemote && (mSpecials & 1) != 0) { - int var4 = aPlayer.getAir(); + public void onArmorTick(World aWorld, EntityPlayer aPlayer, ItemStack aStack) { + if (mSpecials == 0) return; + + if (!aPlayer.worldObj.isRemote && (mSpecials & 1) != 0) { + int var4 = aPlayer.getAir(); if (GT_ModHandler.canUseElectricItem(aStack, 1000) && var4 < 50) { - aPlayer.setAir(var4 + 250); - GT_ModHandler.useElectricItem(aStack, 1000, aPlayer); + aPlayer.setAir(var4 + 250); + GT_ModHandler.useElectricItem(aStack, 1000, aPlayer); } - } - - if (!aPlayer.worldObj.isRemote && (mSpecials & 4) != 0) { + } + + if (!aPlayer.worldObj.isRemote && (mSpecials & 4) != 0) { if (GT_ModHandler.canUseElectricItem(aStack, 50000) && aPlayer.getFoodStats().needFood()) { - aPlayer.getFoodStats().addStats(1, 0.0F); + aPlayer.getFoodStats().addStats(1, 0.0F); GT_ModHandler.useElectricItem(aStack, 50000, aPlayer); } - } - - if ((mSpecials & 8) != 0) { + } + + if ((mSpecials & 8) != 0) { if (GT_ModHandler.canUseElectricItem(aStack, 10000) && aPlayer.isPotionActive(Potion.poison)) { - GT_Utility.removePotion(aPlayer, Potion.poison.id); + GT_Utility.removePotion(aPlayer, Potion.poison.id); GT_ModHandler.useElectricItem(aStack, 10000, aPlayer); } if (GT_ModHandler.canUseElectricItem(aStack, 100000) && aPlayer.isPotionActive(Potion.wither)) { - GT_Utility.removePotion(aPlayer, Potion.wither.id); + GT_Utility.removePotion(aPlayer, Potion.wither.id); GT_ModHandler.useElectricItem(aStack, 100000, aPlayer); } - } + } - if ((mSpecials & 64) != 0) { + if ((mSpecials & 64) != 0) { aPlayer.setFire(0); - } - - if (!aPlayer.worldObj.isRemote && (mSpecials & 128) != 0) { - float var6 = jumpChargeMap.containsKey(aPlayer) ? ((Float)jumpChargeMap.get(aPlayer)).floatValue() : 1.0F; + } + + if (!aPlayer.worldObj.isRemote && (mSpecials & 128) != 0) { + float var6 = jumpChargeMap.containsKey(aPlayer) ? ((Float) jumpChargeMap.get(aPlayer)).floatValue() : 1.0F; if (GT_ModHandler.canUseElectricItem(aStack, 1000) && aPlayer.onGround && var6 < 1.0F) { var6 = 1.0F; @@ -145,88 +144,88 @@ public class GT_EnergyArmor_Item extends ItemArmor implements ISpecialArmor { if (aPlayer.motionY >= 0.0D && var6 > 0.0F && !aPlayer.isInWater()) { if (GT_ModHandler.getJumpKeyDown(aPlayer) && GT_ModHandler.getBoostKeyDown(aPlayer)) { if (var6 == 1.0F) { - aPlayer.motionX *= 3.5D; - aPlayer.motionZ *= 3.5D; + aPlayer.motionX *= 3.5D; + aPlayer.motionZ *= 3.5D; } aPlayer.motionY += (var6 * 0.3F); - var6 = (float)(var6 * 0.75D); + var6 = (float) (var6 * 0.75D); } else if (var6 < 1.0F) { var6 = 0.0F; } } jumpChargeMap.put(aPlayer, Float.valueOf(var6)); - } + } - if ((mSpecials & 256) != 0) { + if ((mSpecials & 256) != 0) { if (GT_ModHandler.canUseElectricItem(aStack, 100) && aPlayer.isSprinting() && (aPlayer.onGround && Math.abs(aPlayer.motionX) + Math.abs(aPlayer.motionZ) > 0.10000000149011612D || aPlayer.isInWater())) { GT_ModHandler.useElectricItem(aStack, 100, aPlayer); float var7 = 0.22F; - + if (aPlayer.isInWater()) { GT_ModHandler.useElectricItem(aStack, 100, aPlayer); var7 = 0.1F; - - + + if (aPlayer.motionY > 0) { - aPlayer.motionY += 0.10000000149011612D; + aPlayer.motionY += 0.10000000149011612D; } } - + if (var7 > 0.0F) { - aPlayer.moveFlying(0.0F, 1.0F, var7); + aPlayer.moveFlying(0.0F, 1.0F, var7); } } - } - - if ((mSpecials & 512) != 0) { + } + + if ((mSpecials & 512) != 0) { if (GT_ModHandler.canUseElectricItem(aStack, 10000)) { - GT_ModHandler.useElectricItem(aStack, 10000, aPlayer); + GT_ModHandler.useElectricItem(aStack, 10000, aPlayer); aPlayer.addPotionEffect(new PotionEffect(Potion.invisibility.getId(), 25, 1, true)); } - } - - if (!aPlayer.worldObj.isRemote && (mSpecials & (16|32)) != 0) { - //if (GregTech_API.sWorldTickCounter%20==0) { - ItemStack tTargetChargeItem = aStack, tTargetDechargeItem = aStack; - - if (GT_ModHandler.chargeElectricItem(tTargetChargeItem, 1, Integer.MAX_VALUE, true, true) < 1) { - tTargetChargeItem = aPlayer.inventory.armorInventory[2]; - } - if (GT_ModHandler.dischargeElectricItem(tTargetDechargeItem, 10, Integer.MAX_VALUE, true, true, true) < 10) { - tTargetDechargeItem = aPlayer.inventory.armorInventory[2]; - } - - if (tTargetChargeItem == null || !GT_ModHandler.isElectricItem(tTargetChargeItem)) { - tTargetChargeItem = null; - } - if (tTargetDechargeItem == null || !GT_ModHandler.isElectricItem(tTargetChargeItem) || !(aStack == tTargetDechargeItem || GT_ModHandler.isChargerItem(tTargetDechargeItem))) { - tTargetDechargeItem = null; - } - - if (aPlayer.worldObj.isDaytime() && aPlayer.worldObj.canBlockSeeTheSky(MathHelper.floor_double(aPlayer.posX), MathHelper.floor_double(aPlayer.posY+1), MathHelper.floor_double(aPlayer.posZ))) { - if ((mSpecials & 32) != 0 && tTargetChargeItem != null) { - GT_ModHandler.chargeElectricItem(tTargetChargeItem, 20, Integer.MAX_VALUE, true, false); - } - } else { - /* TODO: + } + + if (!aPlayer.worldObj.isRemote && (mSpecials & (16 | 32)) != 0) { + //if (GregTech_API.sWorldTickCounter%20==0) { + ItemStack tTargetChargeItem = aStack, tTargetDechargeItem = aStack; + + if (GT_ModHandler.chargeElectricItem(tTargetChargeItem, 1, Integer.MAX_VALUE, true, true) < 1) { + tTargetChargeItem = aPlayer.inventory.armorInventory[2]; + } + if (GT_ModHandler.dischargeElectricItem(tTargetDechargeItem, 10, Integer.MAX_VALUE, true, true, true) < 10) { + tTargetDechargeItem = aPlayer.inventory.armorInventory[2]; + } + + if (tTargetChargeItem == null || !GT_ModHandler.isElectricItem(tTargetChargeItem)) { + tTargetChargeItem = null; + } + if (tTargetDechargeItem == null || !GT_ModHandler.isElectricItem(tTargetChargeItem) || !(aStack == tTargetDechargeItem || GT_ModHandler.isChargerItem(tTargetDechargeItem))) { + tTargetDechargeItem = null; + } + + if (aPlayer.worldObj.isDaytime() && aPlayer.worldObj.canBlockSeeTheSky(MathHelper.floor_double(aPlayer.posX), MathHelper.floor_double(aPlayer.posY + 1), MathHelper.floor_double(aPlayer.posZ))) { + if ((mSpecials & 32) != 0 && tTargetChargeItem != null) { + GT_ModHandler.chargeElectricItem(tTargetChargeItem, 20, Integer.MAX_VALUE, true, false); + } + } else { + /* TODO: if ((mSpecials & 16) != 0 && tTargetDechargeItem != null && GT_ModHandler.canUseElectricItem(tTargetDechargeItem, 10)) { if (aPlayer.worldObj.getBlock ((int)aPlayer.posX, (int)aPlayer.posY+1, (int)aPlayer.posZ) == Blocks.air) aPlayer.worldObj.setBlock ((int)aPlayer.posX, (int)aPlayer.posY+1, (int)aPlayer.posZ, GregTech_API.sBlockList[3]); GT_ModHandler.useElectricItem(tTargetDechargeItem, 10, aPlayer); }*/ - //} - } - } - } - - @Override + //} + } + } + } + + @Override public boolean getShareTag() { return true; } - - @Override + + @Override @SideOnly(Side.CLIENT) public void getSubItems(Item aItem, CreativeTabs var2, List var3) { ItemStack tCharged = new ItemStack(this, 1), tUncharged = new ItemStack(this, 1, getMaxDamage()); @@ -234,94 +233,99 @@ public class GT_EnergyArmor_Item extends ItemArmor implements ISpecialArmor { var3.add(tCharged); var3.add(tUncharged); } - - public boolean canProvideEnergy(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mChargeProvider; - } - - public Item getChargedItem(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return this; - } - - public Item getEmptyItem(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return this; - } - - public int getMaxCharge(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mCharge; - } - - public int getTier(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mTier; - } - - public int getTransferLimit(ItemStack aStack) { - if ((mSpecials & 1024) != 0) setCharge(aStack); - return mTransfer; - } - - @Override + + public boolean canProvideEnergy(ItemStack aStack) { + if ((mSpecials & 1024) != 0) setCharge(aStack); + return mChargeProvider; + } + + public Item getChargedItem(ItemStack aStack) { + if ((mSpecials & 1024) != 0) setCharge(aStack); + return this; + } + + public Item getEmptyItem(ItemStack aStack) { + if ((mSpecials & 1024) != 0) setCharge(aStack); + return this; + } + + public int getMaxCharge(ItemStack aStack) { + if ((mSpecials & 1024) != 0) setCharge(aStack); + return mCharge; + } + + public int getTier(ItemStack aStack) { + if ((mSpecials & 1024) != 0) setCharge(aStack); + return mTier; + } + + public int getTransferLimit(ItemStack aStack) { + if ((mSpecials & 1024) != 0) setCharge(aStack); + return mTransfer; + } + + @Override public int getItemEnchantability() { return 0; } - - @Override + + @Override public boolean isBookEnchantable(ItemStack itemstack1, ItemStack itemstack2) { return false; } - - @Override + + @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return false; } - + // TODO: @ForgeSubscribe public void onEntityLivingFallEvent(LivingFallEvent var1) { if (!var1.entity.worldObj.isRemote && var1.entity instanceof EntityPlayer) { - EntityPlayer var2 = (EntityPlayer)var1.entity; + EntityPlayer var2 = (EntityPlayer) var1.entity; for (int i = 0; i < 4; i++) { - ItemStack var3 = var2.inventory.armorInventory[i]; - if (var3 != null && var3.getItem() == this && (mSpecials & 2) != 0) { - int var4 = (int)var1.distance - 3; - int var5 = (this.mDamageEnergyCost * var4) / 4; - if (var5 <= GT_ModHandler.dischargeElectricItem(var3, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, true)) { - GT_ModHandler.dischargeElectricItem(var3, var5, Integer.MAX_VALUE, true, false, true); - var1.setCanceled(true); - break; - } - } + ItemStack var3 = var2.inventory.armorInventory[i]; + if (var3 != null && var3.getItem() == this && (mSpecials & 2) != 0) { + int var4 = (int) var1.distance - 3; + int var5 = (this.mDamageEnergyCost * var4) / 4; + if (var5 <= GT_ModHandler.dischargeElectricItem(var3, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, true)) { + GT_ModHandler.dischargeElectricItem(var3, var5, Integer.MAX_VALUE, true, false, true); + var1.setCanceled(true); + break; + } + } } } } - - @Override + + @Override public ISpecialArmor.ArmorProperties getProperties(EntityLivingBase var1, ItemStack var2, DamageSource var3, double var4, int var6) { - return new ISpecialArmor.ArmorProperties((var3 == DamageSource.fall && (mSpecials & 2) != 0)?10:0, getBaseAbsorptionRatio() * mArmorAbsorbtionPercentage, mDamageEnergyCost > 0 ? 25 * GT_ModHandler.dischargeElectricItem(var2, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, true) / mDamageEnergyCost : 0); + return new ISpecialArmor.ArmorProperties((var3 == DamageSource.fall && (mSpecials & 2) != 0) ? 10 : 0, getBaseAbsorptionRatio() * mArmorAbsorbtionPercentage, mDamageEnergyCost > 0 ? 25 * GT_ModHandler.dischargeElectricItem(var2, Integer.MAX_VALUE, Integer.MAX_VALUE, true, true, true) / mDamageEnergyCost : 0); } - - @Override + + @Override public int getArmorDisplay(EntityPlayer var1, ItemStack var2, int var3) { - return (int)Math.round(20.0D * getBaseAbsorptionRatio() * mArmorAbsorbtionPercentage); + return (int) Math.round(20.0D * getBaseAbsorptionRatio() * mArmorAbsorbtionPercentage); } - - @Override + + @Override public void damageArmor(EntityLivingBase var1, ItemStack var2, DamageSource var3, int var4, int var5) { GT_ModHandler.dischargeElectricItem(var2, var4 * mDamageEnergyCost, Integer.MAX_VALUE, true, false, true); } - + private double getBaseAbsorptionRatio() { - if (mArmorAbsorbtionPercentage <= 0) return 0.00; + if (mArmorAbsorbtionPercentage <= 0) return 0.00; switch (this.armorType) { - case 0: return 0.15; - case 1: return 0.40; - case 2: return 0.30; - case 3: return 0.15; - default: return 0.00; + case 0: + return 0.15; + case 1: + return 0.40; + case 2: + return 0.30; + case 3: + return 0.15; + default: + return 0.00; } } } diff --git a/src/main/java/gregtech/api/items/GT_Generic_Block.java b/src/main/java/gregtech/api/items/GT_Generic_Block.java index a4fd8b61a4..2882ece1fa 100644 --- a/src/main/java/gregtech/api/items/GT_Generic_Block.java +++ b/src/main/java/gregtech/api/items/GT_Generic_Block.java @@ -1,19 +1,20 @@ package gregtech.api.items; -import static gregtech.api.enums.GT_Values.W; +import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.util.GT_LanguageManager; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.ItemBlock; -import cpw.mods.fml.common.registry.GameRegistry; + +import static gregtech.api.enums.GT_Values.W; public class GT_Generic_Block extends Block { - protected final String mUnlocalizedName; - - protected GT_Generic_Block(Class aItemClass, String aName, Material aMaterial) { - super(aMaterial); - setBlockName(mUnlocalizedName = aName); - GameRegistry.registerBlock(this, aItemClass, getUnlocalizedName()); - GT_LanguageManager.addStringLocalization(getUnlocalizedName()+"." + W + ".name", "Any Sub Block of this one"); - } + protected final String mUnlocalizedName; + + protected GT_Generic_Block(Class aItemClass, String aName, Material aMaterial) { + super(aMaterial); + setBlockName(mUnlocalizedName = aName); + GameRegistry.registerBlock(this, aItemClass, getUnlocalizedName()); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + W + ".name", "Any Sub Block of this one"); + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/items/GT_Generic_Item.java b/src/main/java/gregtech/api/items/GT_Generic_Item.java index a90c13a204..a6ce9d67a6 100644 --- a/src/main/java/gregtech/api/items/GT_Generic_Item.java +++ b/src/main/java/gregtech/api/items/GT_Generic_Item.java @@ -1,7 +1,8 @@ package gregtech.api.items; -import static gregtech.api.enums.GT_Values.MOD_ID; -import static gregtech.api.enums.GT_Values.RES_PATH_ITEM; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTech_API; import gregtech.api.enums.SubTag; import gregtech.api.interfaces.IProjectileItem; @@ -9,9 +10,6 @@ import gregtech.api.util.GT_Config; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_Utility; - -import java.util.List; - import net.minecraft.block.BlockDispenser; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.dispenser.BehaviorDefaultDispenseItem; @@ -27,118 +25,134 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.IIcon; import net.minecraft.world.World; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; + +import java.util.List; + +import static gregtech.api.enums.GT_Values.MOD_ID; +import static gregtech.api.enums.GT_Values.RES_PATH_ITEM; /** * Extended by most Items, also used as a fallback Item, to prevent the accidental deletion when Errors occur. */ public class GT_Generic_Item extends Item implements IProjectileItem { - protected IIcon mIcon; - private final String mName, mTooltip; - - public GT_Generic_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip) { - this(aUnlocalized, aEnglish, aEnglishTooltip, true); - } - - public GT_Generic_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip, boolean aWriteToolTipIntoLangFile) { - super(); - mName = "gt." + aUnlocalized; - GT_LanguageManager.addStringLocalization(mName + ".name", aEnglish); - if (GT_Utility.isStringValid(aEnglishTooltip)) GT_LanguageManager.addStringLocalization(mTooltip = mName + ".tooltip_main", aEnglishTooltip, aWriteToolTipIntoLangFile); else mTooltip = null; - setCreativeTab(GregTech_API.TAB_GREGTECH); - GameRegistry.registerItem(this, mName, MOD_ID); - BlockDispenser.dispenseBehaviorRegistry.putObject(this, new GT_Item_Dispense()); - } - - @Override public final Item setUnlocalizedName(String aName) {return this;} - @Override public final String getUnlocalizedName() {return mName;} - @Override public String getUnlocalizedName(ItemStack aStack) {return getHasSubtypes()?mName+"."+getDamage(aStack):mName;} - - @Override + private final String mName, mTooltip; + protected IIcon mIcon; + + public GT_Generic_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip) { + this(aUnlocalized, aEnglish, aEnglishTooltip, true); + } + + public GT_Generic_Item(String aUnlocalized, String aEnglish, String aEnglishTooltip, boolean aWriteToolTipIntoLangFile) { + super(); + mName = "gt." + aUnlocalized; + GT_LanguageManager.addStringLocalization(mName + ".name", aEnglish); + if (GT_Utility.isStringValid(aEnglishTooltip)) + GT_LanguageManager.addStringLocalization(mTooltip = mName + ".tooltip_main", aEnglishTooltip, aWriteToolTipIntoLangFile); + else mTooltip = null; + setCreativeTab(GregTech_API.TAB_GREGTECH); + GameRegistry.registerItem(this, mName, MOD_ID); + BlockDispenser.dispenseBehaviorRegistry.putObject(this, new GT_Item_Dispense()); + } + + @Override + public final Item setUnlocalizedName(String aName) { + return this; + } + + @Override + public final String getUnlocalizedName() { + return mName; + } + + @Override + public String getUnlocalizedName(ItemStack aStack) { + return getHasSubtypes() ? mName + "." + getDamage(aStack) : mName; + } + + @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister aIconRegister) { - mIcon = aIconRegister.registerIcon(RES_PATH_ITEM + (GT_Config.troll?"troll":mName)); + mIcon = aIconRegister.registerIcon(RES_PATH_ITEM + (GT_Config.troll ? "troll" : mName)); } - - @Override + + @Override public boolean doesSneakBypassUse(World aWorld, int aX, int aY, int aZ, EntityPlayer aPlayer) { return true; } - - @Override + + @Override public IIcon getIconFromDamage(int par1) { return mIcon; } - - public int getTier(ItemStack aStack) { - return 0; - } - - @Override + + public int getTier(ItemStack aStack) { + return 0; + } + + @Override public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - if (getMaxDamage() > 0 && !getHasSubtypes()) aList.add((aStack.getMaxDamage() - getDamage(aStack)) + " / " + aStack.getMaxDamage()); - if (mTooltip != null) aList.add(GT_LanguageManager.getTranslation(mTooltip)); - if (GT_ModHandler.isElectricItem(aStack)) aList.add("Tier: " + getTier(aStack)); - addAdditionalToolTips(aList, aStack); - } - - protected void addAdditionalToolTips(List aList, ItemStack aStack) { - // - } - - @Override + if (getMaxDamage() > 0 && !getHasSubtypes()) + aList.add((aStack.getMaxDamage() - getDamage(aStack)) + " / " + aStack.getMaxDamage()); + if (mTooltip != null) aList.add(GT_LanguageManager.getTranslation(mTooltip)); + if (GT_ModHandler.isElectricItem(aStack)) aList.add("Tier: " + getTier(aStack)); + addAdditionalToolTips(aList, aStack); + } + + protected void addAdditionalToolTips(List aList, ItemStack aStack) { + // + } + + @Override public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { - isItemStackUsable(aStack); - } - - public boolean isItemStackUsable(ItemStack aStack) { - return true; - } - - public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { + isItemStackUsable(aStack); + } + + public boolean isItemStackUsable(ItemStack aStack) { + return true; + } + + public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { EnumFacing enumfacing = BlockDispenser.func_149937_b(aSource.getBlockMetadata()); IPosition iposition = BlockDispenser.func_149939_a(aSource); ItemStack itemstack1 = aStack.splitStack(1); BehaviorDefaultDispenseItem.doDispense(aSource.getWorld(), itemstack1, 6, enumfacing, iposition); - return aStack; - } - - public static class GT_Item_Dispense extends BehaviorProjectileDispense { - @Override - public ItemStack dispenseStack(IBlockSource aSource, ItemStack aStack) { - return ((GT_Generic_Item)aStack.getItem()).onDispense(aSource, aStack); - } - - @Override - protected IProjectile getProjectileEntity(World aWorld, IPosition aPosition) { - return null; - } - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, double aZ) { - return null; - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, float aSpeed) { - return null; - } - - @Override - public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { - return false; - } - - @Override + return aStack; + } + + @Override + public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, double aZ) { + return null; + } + + @Override + public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, float aSpeed) { + return null; + } + + @Override + public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { + return false; + } + + @Override public ItemStack getContainerItem(ItemStack aStack) { return null; } - - @Override + + @Override public boolean hasContainerItem(ItemStack aStack) { return getContainerItem(aStack) != null; } + + public static class GT_Item_Dispense extends BehaviorProjectileDispense { + @Override + public ItemStack dispenseStack(IBlockSource aSource, ItemStack aStack) { + return ((GT_Generic_Item) aStack.getItem()).onDispense(aSource, aStack); + } + + @Override + protected IProjectile getProjectileEntity(World aWorld, IPosition aPosition) { + return null; + } + } } \ No newline at end of file diff --git a/src/main/java/gregtech/api/items/GT_MetaBase_Item.java b/src/main/java/gregtech/api/items/GT_MetaBase_Item.java index 4a0cd6f655..66c928340f 100644 --- a/src/main/java/gregtech/api/items/GT_MetaBase_Item.java +++ b/src/main/java/gregtech/api/items/GT_MetaBase_Item.java @@ -1,7 +1,5 @@ package gregtech.api.items; -import static gregtech.api.enums.GT_Values.D1; -import static gregtech.api.enums.GT_Values.V; import gregtech.api.enums.SubTag; import gregtech.api.interfaces.IItemBehaviour; import gregtech.api.util.GT_LanguageManager; @@ -12,11 +10,6 @@ import ic2.api.item.ElectricItem; import ic2.api.item.IElectricItem; import ic2.api.item.IElectricItemManager; import ic2.api.item.ISpecialElectricItem; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - import net.minecraft.dispenser.IBlockSource; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -31,525 +24,591 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import static gregtech.api.enums.GT_Values.D1; +import static gregtech.api.enums.GT_Values.V; + public abstract class GT_MetaBase_Item extends GT_Generic_Item implements ISpecialElectricItem, IElectricItemManager, IFluidContainerItem { - /* ---------- CONSTRUCTOR AND MEMBER VARIABLES ---------- */ - private final HashMap>> mItemBehaviors = new HashMap>>(); - - /** - * Creates the Item using these Parameters. - * @param aUnlocalized The Unlocalized Name of this Item. - * @param aGeneratedPrefixList The OreDict Prefixes you want to have generated. - */ - public GT_MetaBase_Item(String aUnlocalized) { - super(aUnlocalized, "Generated Item", null, false); + /* ---------- CONSTRUCTOR AND MEMBER VARIABLES ---------- */ + private final HashMap>> mItemBehaviors = new HashMap>>(); + + /** + * Creates the Item using these Parameters. + * + * @param aUnlocalized The Unlocalized Name of this Item. + * @param aGeneratedPrefixList The OreDict Prefixes you want to have generated. + */ + public GT_MetaBase_Item(String aUnlocalized) { + super(aUnlocalized, "Generated Item", null, false); setHasSubtypes(true); setMaxDamage(0); - } - - /** - * Adds a special Item Behaviour to the Item. - * - * Note: the boolean Behaviours sometimes won't be executed if another boolean Behaviour returned true before. - * - * @param aMetaValue the Meta Value of the Item you want to add it to. [0 - 32765] - * @param aBehavior the Click Behavior you want to add. - * @return the Item itself for convenience in constructing. - */ - public final GT_MetaBase_Item addItemBehavior(int aMetaValue, IItemBehaviour aBehavior) { - if (aMetaValue < 0 || aMetaValue >= 32766 || aBehavior == null) return this; - ArrayList> tList = mItemBehaviors.get((short)aMetaValue); - if (tList == null) { - tList = new ArrayList>(1); - mItemBehaviors.put((short)aMetaValue, tList); - } - tList.add(aBehavior); - return this; - } - - public abstract Long[] getElectricStats(ItemStack aStack); - public abstract Long[] getFluidContainerStats(ItemStack aStack); - - @Override - public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) if (tBehavior.hasProjectile(this, aProjectileType, aStack)) return true; - return super.hasProjectile(aProjectileType, aStack); - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, double aZ) { - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) { - EntityArrow rArrow = tBehavior.getProjectile(this, aProjectileType, aStack, aWorld, aX, aY, aZ); - if (rArrow != null) return rArrow; - } - return super.getProjectile(aProjectileType, aStack, aWorld, aX, aY, aZ); - } - - @Override - public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, float aSpeed) { - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) { - EntityArrow rArrow = tBehavior.getProjectile(this, aProjectileType, aStack, aWorld, aEntity, aSpeed); - if (rArrow != null) return rArrow; - } - return super.getProjectile(aProjectileType, aStack, aWorld, aEntity, aSpeed); - } - - @Override - public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) if (tBehavior.canDispense(this, aSource, aStack)) return tBehavior.onDispense(this, aSource, aStack); - return super.onDispense(aSource, aStack); - } - - @Override - public boolean isItemStackUsable(ItemStack aStack) { - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) if (!tBehavior.isItemStackUsable(this, aStack)) return false; - return super.isItemStackUsable(aStack); - } - + } + + /** + * Adds a special Item Behaviour to the Item. + *

+ * Note: the boolean Behaviours sometimes won't be executed if another boolean Behaviour returned true before. + * + * @param aMetaValue the Meta Value of the Item you want to add it to. [0 - 32765] + * @param aBehavior the Click Behavior you want to add. + * @return the Item itself for convenience in constructing. + */ + public final GT_MetaBase_Item addItemBehavior(int aMetaValue, IItemBehaviour aBehavior) { + if (aMetaValue < 0 || aMetaValue >= 32766 || aBehavior == null) return this; + ArrayList> tList = mItemBehaviors.get((short) aMetaValue); + if (tList == null) { + tList = new ArrayList>(1); + mItemBehaviors.put((short) aMetaValue, tList); + } + tList.add(aBehavior); + return this; + } + + public abstract Long[] getElectricStats(ItemStack aStack); + + public abstract Long[] getFluidContainerStats(ItemStack aStack); + + @Override + public boolean hasProjectile(SubTag aProjectileType, ItemStack aStack) { + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + if (tBehavior.hasProjectile(this, aProjectileType, aStack)) return true; + return super.hasProjectile(aProjectileType, aStack); + } + + @Override + public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, double aX, double aY, double aZ) { + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) { + EntityArrow rArrow = tBehavior.getProjectile(this, aProjectileType, aStack, aWorld, aX, aY, aZ); + if (rArrow != null) return rArrow; + } + return super.getProjectile(aProjectileType, aStack, aWorld, aX, aY, aZ); + } + + @Override + public EntityArrow getProjectile(SubTag aProjectileType, ItemStack aStack, World aWorld, EntityLivingBase aEntity, float aSpeed) { + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) { + EntityArrow rArrow = tBehavior.getProjectile(this, aProjectileType, aStack, aWorld, aEntity, aSpeed); + if (rArrow != null) return rArrow; + } + return super.getProjectile(aProjectileType, aStack, aWorld, aEntity, aSpeed); + } + + @Override + public ItemStack onDispense(IBlockSource aSource, ItemStack aStack) { + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + if (tBehavior.canDispense(this, aSource, aStack)) return tBehavior.onDispense(this, aSource, aStack); + return super.onDispense(aSource, aStack); + } + + @Override + public boolean isItemStackUsable(ItemStack aStack) { + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + if (!tBehavior.isItemStackUsable(this, aStack)) return false; + return super.isItemStackUsable(aStack); + } + @Override public boolean onLeftClickEntity(ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) try { - if (tBehavior.onLeftClickEntity(this, aStack, aPlayer, aEntity)) { - if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); - return true; - } - if (aStack.stackSize <= 0) { - aPlayer.destroyCurrentEquippedItem(); - return false; - } - } catch(Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return false; - } - - @Override - public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) try { - if (tBehavior.onItemUse(this, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ)) { - if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); - return true; - } - if (aStack.stackSize <= 0) { - aPlayer.destroyCurrentEquippedItem(); - return false; - } - } catch(Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return false; - } - - @Override - public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) try { - if (tBehavior.onItemUseFirst(this, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ)) { - if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); - return true; - } - if (aStack.stackSize <= 0) { - aPlayer.destroyCurrentEquippedItem(); - return false; - } - } catch(Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return false; - } - - @Override - public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { - use(aStack, 0, aPlayer); - isItemStackUsable(aStack); - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) try { - aStack = tBehavior.onItemRightClick(this, aStack, aWorld, aPlayer); - } catch(Throwable e) { - if (D1) e.printStackTrace(GT_Log.err); - } - return aStack; - } - - @Override + use(aStack, 0, aPlayer); + isItemStackUsable(aStack); + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + try { + if (tBehavior.onLeftClickEntity(this, aStack, aPlayer, aEntity)) { + if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); + return true; + } + if (aStack.stackSize <= 0) { + aPlayer.destroyCurrentEquippedItem(); + return false; + } + } catch (Throwable e) { + if (D1) e.printStackTrace(GT_Log.err); + } + return false; + } + + @Override + public boolean onItemUse(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + use(aStack, 0, aPlayer); + isItemStackUsable(aStack); + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + try { + if (tBehavior.onItemUse(this, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ)) { + if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); + return true; + } + if (aStack.stackSize <= 0) { + aPlayer.destroyCurrentEquippedItem(); + return false; + } + } catch (Throwable e) { + if (D1) e.printStackTrace(GT_Log.err); + } + return false; + } + + @Override + public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + use(aStack, 0, aPlayer); + isItemStackUsable(aStack); + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + try { + if (tBehavior.onItemUseFirst(this, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ)) { + if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem(); + return true; + } + if (aStack.stackSize <= 0) { + aPlayer.destroyCurrentEquippedItem(); + return false; + } + } catch (Throwable e) { + if (D1) e.printStackTrace(GT_Log.err); + } + return false; + } + + @Override + public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) { + use(aStack, 0, aPlayer); + isItemStackUsable(aStack); + ArrayList> tList = mItemBehaviors.get((short) getDamage(aStack)); + if (tList != null) for (IItemBehaviour tBehavior : tList) + try { + aStack = tBehavior.onItemRightClick(this, aStack, aWorld, aPlayer); + } catch (Throwable e) { + if (D1) e.printStackTrace(GT_Log.err); + } + return aStack; + } + + @Override public final void addInformation(ItemStack aStack, EntityPlayer aPlayer, List aList, boolean aF3_H) { - String tKey = getUnlocalizedName(aStack) + ".tooltip", tString = GT_LanguageManager.getTranslation(tKey); - if (GT_Utility.isStringValid(tString) && !tKey.equals(tString)) aList.add(tString); - - Long[] - tStats = getElectricStats(aStack); - if (tStats != null) { - if (tStats[3] > 0) { - aList.add(EnumChatFormatting.AQUA + "Contains " + GT_Utility.formatNumbers(tStats[3]) + " EU Tier: " + (tStats[2]>=0?tStats[2]:0) + EnumChatFormatting.GRAY); - } else { - long tCharge = getRealCharge(aStack); - if (tStats[3] == -2 && tCharge <= 0) { - aList.add(EnumChatFormatting.AQUA + "Empty. You should recycle it properly." + EnumChatFormatting.GRAY); - } else { - aList.add(EnumChatFormatting.AQUA + "" + GT_Utility.formatNumbers(tCharge) + " / " + GT_Utility.formatNumbers(Math.abs(tStats[0])) + " EU - Voltage: " + V[(int)(tStats[2]>=0?tStats[2] 0) { - FluidStack tFluid = getFluidContent(aStack); - aList.add(EnumChatFormatting.BLUE + ((tFluid==null?"No Fluids Contained":GT_Utility.getFluidName(tFluid, true))) + EnumChatFormatting.GRAY); - aList.add(EnumChatFormatting.BLUE + ((tFluid==null?0:tFluid.amount) + "L / " + tStats[0] + "L") + EnumChatFormatting.GRAY); - } - - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) aList = tBehavior.getAdditionalToolTips(this, aList, aStack); - - addAdditionalToolTips(aList, aStack); - } - - @Override - public void onUpdate(ItemStack aStack, World aWorld, Entity aPlayer, int aTimer, boolean aIsInHand) { - ArrayList> tList = mItemBehaviors.get((short)getDamage(aStack)); - if (tList != null) for (IItemBehaviour tBehavior : tList) tBehavior.onUpdate(this, aStack, aWorld, aPlayer, aTimer, aIsInHand); - } - - @Override - public final boolean canProvideEnergy(ItemStack aStack) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null) return false; - return tStats[3] > 0 || (aStack.stackSize == 1 && (tStats[3] == -2 || tStats[3] == -3)); - } - - @Override - public final double getMaxCharge(ItemStack aStack) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null) return 0; - return Math.abs(tStats[0]); - } - - @Override - public final double getTransferLimit(ItemStack aStack) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null) return 0; - return Math.max(tStats[1], tStats[3]); - } - - @Override - public final double charge(ItemStack aStack, double aCharge, int aTier, boolean aIgnoreTransferLimit, boolean aSimulate) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null || tStats[2] > aTier || !(tStats[3] == -1 || tStats[3] == -3 || (tStats[3] < 0 && aCharge == Integer.MAX_VALUE)) || aStack.stackSize != 1) return 0; - long tChargeBefore = getRealCharge(aStack), tNewCharge = aCharge==Integer.MAX_VALUE?Long.MAX_VALUE:Math.min(Math.abs(tStats[0]), tChargeBefore + (aIgnoreTransferLimit?(long)aCharge:Math.min(tStats[1], (long)aCharge))); - if (!aSimulate) setCharge(aStack, tNewCharge); - return tNewCharge-tChargeBefore; - } - - @Override - public final double discharge(ItemStack aStack, double aCharge, int aTier, boolean aIgnoreTransferLimit, boolean aBatteryAlike, boolean aSimulate) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null || tStats[2] > aTier) return 0; - if (aBatteryAlike && !canProvideEnergy(aStack)) return 0; - if (tStats[3] > 0) { - if (aCharge < tStats[3] || aStack.stackSize < 1) return 0; - if (!aSimulate) aStack.stackSize--; - return tStats[3]; - } - long tChargeBefore = getRealCharge(aStack), tNewCharge = Math.max(0, tChargeBefore - (aIgnoreTransferLimit?(long)aCharge:Math.min(tStats[1], (long)aCharge))); - if (!aSimulate) setCharge(aStack, tNewCharge); - return tChargeBefore-tNewCharge; - } - - @Override - public final double getCharge(ItemStack aStack) { - return getRealCharge(aStack); - } - - @Override - public final boolean canUse(ItemStack aStack, double aAmount) { - return getRealCharge(aStack) >= aAmount; - } - - @Override - public final boolean use(ItemStack aStack, double aAmount, EntityLivingBase aPlayer) { - chargeFromArmor(aStack, aPlayer); - if (aPlayer instanceof EntityPlayer && ((EntityPlayer)aPlayer).capabilities.isCreativeMode) return true; - double tTransfer = discharge(aStack, aAmount, Integer.MAX_VALUE, true, false, true); - if (tTransfer == aAmount) { - discharge(aStack, aAmount, Integer.MAX_VALUE, true, false, false); - chargeFromArmor(aStack, aPlayer); - return true; - } - discharge(aStack, aAmount, Integer.MAX_VALUE, true, false, false); - chargeFromArmor(aStack, aPlayer); - return false; - } - - @Override - public final void chargeFromArmor(ItemStack aStack, EntityLivingBase aPlayer) { - if (aPlayer == null || aPlayer.worldObj.isRemote) return; - for (int i = 1; i < 5; i++) { - ItemStack tArmor = aPlayer.getEquipmentInSlot(i); - if (GT_ModHandler.isElectricItem(tArmor)) { - IElectricItem tArmorItem = (IElectricItem)tArmor.getItem(); - if (tArmorItem.canProvideEnergy(tArmor) && tArmorItem.getTier(tArmor) >= getTier(aStack)) { - double tCharge = ElectricItem.manager.discharge(tArmor, charge(aStack, Integer.MAX_VALUE-1, Integer.MAX_VALUE, true, true), Integer.MAX_VALUE, true, true, false); - if (tCharge > 0) { - charge(aStack, tCharge, Integer.MAX_VALUE, true, false); - if (aPlayer instanceof EntityPlayer) { - Container tContainer = ((EntityPlayer)aPlayer).openContainer; - if (tContainer != null) tContainer.detectAndSendChanges(); - } - } - } - } - } - } - /* - - @Override - public final int getMaxCharge(ItemStack aStack) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null) return 0; - return (int)Math.abs(tStats[0]); - } - - @Override - public final int getTransferLimit(ItemStack aStack) { - Long[] tStats = getElectricStats(aStack); - if (tStats == null) return 0; - return (int)Math.max(tStats[1], tStats[3]); - } - - @Override - public final int charge(ItemStack aStack, int aCharge, int aTier, boolean aIgnoreTransferLimit, boolean aSimulate) { -