aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/items
diff options
context:
space:
mode:
authorShawn Buckley <shawntbuckley@gmail.com>2015-10-21 22:06:25 -0400
committerShawn Buckley <shawntbuckley@gmail.com>2015-10-21 22:06:25 -0400
commit9353aa711b1d750ff945acdfed2d3b956291b615 (patch)
treed6ca62ab093dede52afef0d82ac29d32c56fb29b /src/main/java/gregtech/api/items
parent445e6c3f25714ecf15c07dcd3462375d65b6dc92 (diff)
downloadGT5-Unofficial-9353aa711b1d750ff945acdfed2d3b956291b615.tar.gz
GT5-Unofficial-9353aa711b1d750ff945acdfed2d3b956291b615.tar.bz2
GT5-Unofficial-9353aa711b1d750ff945acdfed2d3b956291b615.zip
Reformat code
Diffstat (limited to 'src/main/java/gregtech/api/items')
-rw-r--r--src/main/java/gregtech/api/items/GT_CoolantCellIC_Item.java118
-rw-r--r--src/main/java/gregtech/api/items/GT_CoolantCell_Item.java118
-rw-r--r--src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java412
-rw-r--r--src/main/java/gregtech/api/items/GT_Generic_Block.java21
-rw-r--r--src/main/java/gregtech/api/items/GT_Generic_Item.java200
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaBase_Item.java1103
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java568
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X01.java267
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X32.java275
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java925
-rw-r--r--src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java261
-rw-r--r--src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java264
-rw-r--r--src/main/java/gregtech/api/items/GT_SolderingTool_Item.java44
-rw-r--r--src/main/java/gregtech/api/items/GT_Spray_Bug_Item.java79
-rw-r--r--src/main/java/gregtech/api/items/GT_Spray_Foam_Item.java239
-rw-r--r--src/main/java/gregtech/api/items/GT_Spray_Hardener_Item.java97
-rw-r--r--src/main/java/gregtech/api/items/GT_Spray_Hydration_Item.java66
-rw-r--r--src/main/java/gregtech/api/items/GT_Spray_Ice_Item.java86
-rw-r--r--src/main/java/gregtech/api/items/GT_Spray_Pepper_Item.java47
-rw-r--r--src/main/java/gregtech/api/items/GT_Tool_Item.java32
20 files changed, 2655 insertions, 2567 deletions
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<? extends ItemBlock> 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<? extends ItemBlock> 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<Short, ArrayList<IItemBehaviour<GT_MetaBase_Item>>> mItemBehaviors = new HashMap<Short, ArrayList<IItemBehaviour<GT_MetaBase_Item>>>();
-
- /**
- * 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<Short, ArrayList<IItemBehaviour<GT_MetaBase_Item>>> mItemBehaviors = new HashMap<Short, ArrayList<IItemBehaviour<GT_MetaBase_Item>>>();
+
+ /**
+ * 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<GT_MetaBase_Item> aBehavior) {
- if (aMetaValue < 0 || aMetaValue >= 32766 || aBehavior == null) return this;
- ArrayList<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)aMetaValue);
- if (tList == null) {
- tList = new ArrayList<IItemBehaviour<GT_MetaBase_Item>>(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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> tBehavior : tList) if (!tBehavior.isItemStackUsable(this, aStack)) return false;
- return super.isItemStackUsable(aStack);
- }
-
+ }
+
+ /**
+ * Adds a special Item Behaviour to the Item.
+ * <p/>
+ * 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<GT_MetaBase_Item> aBehavior) {
+ if (aMetaValue < 0 || aMetaValue >= 32766 || aBehavior == null) return this;
+ ArrayList<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) aMetaValue);
+ if (tList == null) {
+ tList = new ArrayList<IItemBehaviour<GT_MetaBase_Item>>(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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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]<V.length?tStats[2]:V.length-1:1)] + EnumChatFormatting.GRAY);
- }
- }
- }
-
- tStats = getFluidContainerStats(aStack);
- if (tStats != null && tStats[0] > 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short)getDamage(aStack));
- if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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) {
- 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?aCharge:Math.min(tStats[1], aCharge)));
- if (!aSimulate) setCharge(aStack, tNewCharge);
- return (int)(tNewCharge-tChargeBefore);
- }
-
- @Override
- public final int discharge(ItemStack aStack, int aCharge, int aTier, boolean aIgnoreTransferLimit, boolean aSimulate) {
- Long[] tStats = getElectricStats(aStack);
- if (tStats == null || tStats[2] > aTier) return 0;
- if (tStats[3] > 0) {
- if (aCharge < tStats[3] || aStack.stackSize < 1) return 0;
- if (!aSimulate) aStack.stackSize--;
- return (int)(long)tStats[3];
- }
- long tChargeBefore = getRealCharge(aStack), tNewCharge = Math.max(0, tChargeBefore - (aIgnoreTransferLimit?aCharge:Math.min(tStats[1], aCharge)));
- if (!aSimulate) setCharge(aStack, tNewCharge);
- return (int)(tChargeBefore-tNewCharge);
- }
-
- @Override
- public final int getCharge(ItemStack aStack) {
- return (int)Math.min(Integer.MAX_VALUE, getRealCharge(aStack));
- }
-
- @Override
- public final boolean canUse(ItemStack aStack, int aAmount) {
- return getRealCharge(aStack) >= aAmount;
- }
-
- @Override
- public final boolean use(ItemStack aStack, int aAmount, EntityLivingBase aPlayer) {
- chargeFromArmor(aStack, aPlayer);
- if (aPlayer instanceof EntityPlayer && ((EntityPlayer)aPlayer).capabilities.isCreativeMode) return true;
- int tTransfer = discharge(aStack, aAmount, Integer.MAX_VALUE, true, true);
- if (tTransfer == aAmount) {
- discharge(aStack, aAmount, Integer.MAX_VALUE, true, false);
- chargeFromArmor(aStack, aPlayer);
- return true;
- }
- discharge(aStack, aAmount, Integer.MAX_VALUE, true, 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)) {
- int tCharge = ElectricItem.manager.discharge(tArmor, charge(aStack, Integer.MAX_VALUE-1, Integer.MAX_VALUE, true, true), Integer.MAX_VALUE, 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();
- }
- }
- }
- }
- }
- }
- */
- public final long getRealCharge(ItemStack aStack) {
- Long[] tStats = getElectricStats(aStack);
- if (tStats == null) return 0;
- if (tStats[3] > 0) return (int)(long)tStats[3];
- NBTTagCompound tNBT = aStack.getTagCompound();
- return tNBT==null?0:tNBT.getLong("GT.ItemCharge");
- }
-
- public final boolean setCharge(ItemStack aStack, long aCharge) {
- Long[] tStats = getElectricStats(aStack);
- if (tStats == null || tStats[3] > 0) return false;
- NBTTagCompound tNBT = aStack.getTagCompound();
- if (tNBT == null) tNBT = new NBTTagCompound();
- tNBT.removeTag("GT.ItemCharge");
- aCharge = Math.min(tStats[0]<0?Math.abs(tStats[0] / 2):aCharge, Math.abs(tStats[0]));
- if (aCharge > 0) {
- aStack.setItemDamage(getChargedMetaData(aStack));
- tNBT.setLong("GT.ItemCharge", aCharge);
- } else {
- aStack.setItemDamage(getEmptyMetaData(aStack));
- }
- if (tNBT.hasNoTags()) aStack.setTagCompound(null); else aStack.setTagCompound(tNBT);
- isItemStackUsable(aStack);
- return true;
- }
-
- public short getChargedMetaData(ItemStack aStack) {return (short)aStack.getItemDamage();}
- public short getEmptyMetaData(ItemStack aStack) {return (short)aStack.getItemDamage();}
-
- @Override
- public FluidStack getFluid(ItemStack aStack) {
- return getFluidContent(aStack);
- }
-
- @Override
- public int getCapacity(ItemStack aStack) {
- Long[] tStats = getFluidContainerStats(aStack);
- return tStats==null?0:(int)Math.max(0, tStats[0]);
- }
-
- @Override
- public int fill(ItemStack aStack, FluidStack aFluid, boolean doFill) {
- if (aStack == null || aStack.stackSize != 1) return 0;
-
- ItemStack tStack = GT_Utility.fillFluidContainer(aFluid, aStack, false, false);
- if (tStack != null) {
- aStack.setItemDamage(tStack.getItemDamage());
- aStack.func_150996_a(tStack.getItem());
- return GT_Utility.getFluidForFilledItem(tStack, false).amount;
- }
-
- Long[] tStats = getFluidContainerStats(aStack);
- if (tStats == null || tStats[0] <= 0 || aFluid == null || aFluid.getFluid().getID() <= 0 || aFluid.amount <= 0) return 0;
-
- FluidStack tFluid = getFluidContent(aStack);
-
- if (tFluid == null || tFluid.getFluid().getID() <= 0) {
- if (aFluid.amount <= tStats[0]) {
- if (doFill) {
- setFluidContent(aStack, aFluid);
- }
- return aFluid.amount;
- }
- if (doFill) {
- tFluid = aFluid.copy();
- tFluid.amount = (int)(long)tStats[0];
- setFluidContent(aStack, tFluid);
- }
- return (int)(long)tStats[0];
- }
-
- if (!tFluid.isFluidEqual(aFluid)) return 0;
-
- int space = (int)(long)tStats[0] - tFluid.amount;
- if (aFluid.amount <= space) {
- if (doFill) {
- tFluid.amount += aFluid.amount;
- setFluidContent(aStack, tFluid);
- }
- return aFluid.amount;
- }
- if (doFill) {
- tFluid.amount = (int)(long)tStats[0];
- setFluidContent(aStack, tFluid);
- }
- return space;
- }
-
- @Override
- public FluidStack drain(ItemStack aStack, int maxDrain, boolean doDrain) {
- if (aStack == null || aStack.stackSize != 1) return null;
-
- FluidStack tFluid = GT_Utility.getFluidForFilledItem(aStack, false);
- if (tFluid != null && maxDrain >= tFluid.amount) {
- ItemStack tStack = GT_Utility.getContainerItem(aStack, false);
- if (tStack == null) {
- aStack.stackSize = 0;
- return tFluid;
- }
- aStack.setItemDamage(tStack.getItemDamage());
- aStack.func_150996_a(tStack.getItem());
- return tFluid;
- }
-
- Long[] tStats = getFluidContainerStats(aStack);
- if (tStats == null || tStats[0] <= 0) return null;
-
- tFluid = getFluidContent(aStack);
- if (tFluid == null) return null;
-
- int used = maxDrain;
- if (tFluid.amount < used) used = tFluid.amount;
- if (doDrain) {
- tFluid.amount -= used;
- setFluidContent(aStack, tFluid);
- }
-
- FluidStack drained = tFluid.copy();
- drained.amount = used;
- return drained;
- }
-
- public FluidStack getFluidContent(ItemStack aStack) {
- Long[] tStats = getFluidContainerStats(aStack);
- if (tStats == null || tStats[0] <= 0) return GT_Utility.getFluidForFilledItem(aStack, false);
- NBTTagCompound tNBT = aStack.getTagCompound();
- return tNBT==null?null:FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("GT.FluidContent"));
- }
-
- public void setFluidContent(ItemStack aStack, FluidStack aFluid) {
- NBTTagCompound tNBT = aStack.getTagCompound();
- if (tNBT == null) tNBT = new NBTTagCompound(); else tNBT.removeTag("GT.FluidContent");
- if (aFluid != null && aFluid.amount > 0) tNBT.setTag("GT.FluidContent", aFluid.writeToNBT(new NBTTagCompound()));
- if (tNBT.hasNoTags()) aStack.setTagCompound(null); else aStack.setTagCompound(tNBT);
- isItemStackUsable(aStack);
- }
-
- @Override
- public int getItemStackLimit(ItemStack aStack) {
- Long[] tStats = getElectricStats(aStack);
- if (tStats != null && (tStats[3] == -1 || tStats[3] == -3) && getRealCharge(aStack) > 0) return 1;
- tStats = getFluidContainerStats(aStack);
- if (tStats != null) return (int)(long)tStats[1];
- return 64;
- }
-
- @Override public final Item getChargedItem(ItemStack itemStack) {return this;}
- @Override public final Item getEmptyItem(ItemStack itemStack) {return this;}
- @Override public final int getTier(ItemStack aStack) {Long[] tStats = getElectricStats(aStack); return (int)(tStats==null?Integer.MAX_VALUE:tStats[2]);}
- @Override public final String getToolTip(ItemStack aStack) {return null;} // This has its own ToolTip Handler, no need to let the IC2 Handler screw us up at this Point
- @Override public final IElectricItemManager getManager(ItemStack aStack) {return this;} // We are our own Manager
- @Override public final boolean getShareTag() {return true;} // just to be sure.
- @Override public int getItemEnchantability() {return 0;}
- @Override public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {return false;}
- @Override public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {return false;}
+ 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] < V.length ? tStats[2] : V.length - 1 : 1)] + EnumChatFormatting.GRAY);
+ }
+ }
+ }
+
+ tStats = getFluidContainerStats(aStack);
+ if (tStats != null && tStats[0] > 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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<IItemBehaviour<GT_MetaBase_Item>> tList = mItemBehaviors.get((short) getDamage(aStack));
+ if (tList != null) for (IItemBehaviour<GT_MetaBase_Item> 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) {
+ 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?aCharge:Math.min(tStats[1], aCharge)));
+ if (!aSimulate) setCharge(aStack, tNewCharge);
+ return (int)(tNewCharge-tChargeBefore);
+ }
+
+ @Override
+ public final int discharge(ItemStack aStack, int aCharge, int aTier, boolean aIgnoreTransferLimit, boolean aSimulate) {
+ Long[] tStats = getElectricStats(aStack);
+ if (tStats == null || tStats[2] > aTier) return 0;
+ if (tStats[3] > 0) {
+ if (aCharge < tStats[3] || aStack.stackSize < 1) return 0;
+ if (!aSimulate) aStack.stackSize--;
+ return (int)(long)tStats[3];
+ }
+ long tChargeBefore = getRealCharge(aStack), tNewCharge = Math.max(0, tChargeBefore - (aIgnoreTransferLimit?aCharge:Math.min(tStats[1], aCharge)));
+ if (!aSimulate) setCharge(aStack, tNewCharge);
+ return (int)(tChargeBefore-tNewCharge);
+ }
+
+ @Override
+ public final int getCharge(ItemStack aStack) {
+ return (int)Math.min(Integer.MAX_VALUE, getRealCharge(aStack));
+ }
+
+ @Override
+ public final boolean canUse(ItemStack aStack, int aAmount) {
+ return getRealCharge(aStack) >= aAmount;
+ }
+
+ @Override
+ public final boolean use(ItemStack aStack, int aAmount, EntityLivingBase aPlayer) {
+ chargeFromArmor(aStack, aPlayer);
+ if (aPlayer instanceof EntityPlayer && ((EntityPlayer)aPlayer).capabilities.isCreativeMode) return true;
+ int tTransfer = discharge(aStack, aAmount, Integer.MAX_VALUE, true, true);
+ if (tTransfer == aAmount) {
+ discharge(aStack, aAmount, Integer.MAX_VALUE, true, false);
+ chargeFromArmor(aStack, aPlayer);
+ return true;
+ }
+ discharge(aStack, aAmount, Integer.MAX_VALUE, true, 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)) {
+ int tCharge = ElectricItem.manager.discharge(tArmor, charge(aStack, Integer.MAX_VALUE-1, Integer.MAX_VALUE, true, true), Integer.MAX_VALUE, 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();
+ }
+ }
+ }
+ }
+ }
+ }
+ */
+ public final long getRealCharge(ItemStack aStack) {
+ Long[] tStats = getElectricStats(aStack);
+ if (tStats == null) return 0;
+ if (tStats[3] > 0) return (int) (long) tStats[3];
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ return tNBT == null ? 0 : tNBT.getLong("GT.ItemCharge");
+ }
+
+ public final boolean setCharge(ItemStack aStack, long aCharge) {
+ Long[] tStats = getElectricStats(aStack);
+ if (tStats == null || tStats[3] > 0) return false;
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT == null) tNBT = new NBTTagCompound();
+ tNBT.removeTag("GT.ItemCharge");
+ aCharge = Math.min(tStats[0] < 0 ? Math.abs(tStats[0] / 2) : aCharge, Math.abs(tStats[0]));
+ if (aCharge > 0) {
+ aStack.setItemDamage(getChargedMetaData(aStack));
+ tNBT.setLong("GT.ItemCharge", aCharge);
+ } else {
+ aStack.setItemDamage(getEmptyMetaData(aStack));
+ }
+ if (tNBT.hasNoTags()) aStack.setTagCompound(null);
+ else aStack.setTagCompound(tNBT);
+ isItemStackUsable(aStack);
+ return true;
+ }
+
+ public short getChargedMetaData(ItemStack aStack) {
+ return (short) aStack.getItemDamage();
+ }
+
+ public short getEmptyMetaData(ItemStack aStack) {
+ return (short) aStack.getItemDamage();
+ }
+
+ @Override
+ public FluidStack getFluid(ItemStack aStack) {
+ return getFluidContent(aStack);
+ }
+
+ @Override
+ public int getCapacity(ItemStack aStack) {
+ Long[] tStats = getFluidContainerStats(aStack);
+ return tStats == null ? 0 : (int) Math.max(0, tStats[0]);
+ }
+
+ @Override
+ public int fill(ItemStack aStack, FluidStack aFluid, boolean doFill) {
+ if (aStack == null || aStack.stackSize != 1) return 0;
+
+ ItemStack tStack = GT_Utility.fillFluidContainer(aFluid, aStack, false, false);
+ if (tStack != null) {
+ aStack.setItemDamage(tStack.getItemDamage());
+ aStack.func_150996_a(tStack.getItem());
+ return GT_Utility.getFluidForFilledItem(tStack, false).amount;
+ }
+
+ Long[] tStats = getFluidContainerStats(aStack);
+ if (tStats == null || tStats[0] <= 0 || aFluid == null || aFluid.getFluid().getID() <= 0 || aFluid.amount <= 0)
+ return 0;
+
+ FluidStack tFluid = getFluidContent(aStack);
+
+ if (tFluid == null || tFluid.getFluid().getID() <= 0) {
+ if (aFluid.amount <= tStats[0]) {
+ if (doFill) {
+ setFluidContent(aStack, aFluid);
+ }
+ return aFluid.amount;
+ }
+ if (doFill) {
+ tFluid = aFluid.copy();
+ tFluid.amount = (int) (long) tStats[0];
+ setFluidContent(aStack, tFluid);
+ }
+ return (int) (long) tStats[0];
+ }
+
+ if (!tFluid.isFluidEqual(aFluid)) return 0;
+
+ int space = (int) (long) tStats[0] - tFluid.amount;
+ if (aFluid.amount <= space) {
+ if (doFill) {
+ tFluid.amount += aFluid.amount;
+ setFluidContent(aStack, tFluid);
+ }
+ return aFluid.amount;
+ }
+ if (doFill) {
+ tFluid.amount = (int) (long) tStats[0];
+ setFluidContent(aStack, tFluid);
+ }
+ return space;
+ }
+
+ @Override
+ public FluidStack drain(ItemStack aStack, int maxDrain, boolean doDrain) {
+ if (aStack == null || aStack.stackSize != 1) return null;
+
+ FluidStack tFluid = GT_Utility.getFluidForFilledItem(aStack, false);
+ if (tFluid != null && maxDrain >= tFluid.amount) {
+ ItemStack tStack = GT_Utility.getContainerItem(aStack, false);
+ if (tStack == null) {
+ aStack.stackSize = 0;
+ return tFluid;
+ }
+ aStack.setItemDamage(tStack.getItemDamage());
+ aStack.func_150996_a(tStack.getItem());
+ return tFluid;
+ }
+
+ Long[] tStats = getFluidContainerStats(aStack);
+ if (tStats == null || tStats[0] <= 0) return null;
+
+ tFluid = getFluidContent(aStack);
+ if (tFluid == null) return null;
+
+ int used = maxDrain;
+ if (tFluid.amount < used) used = tFluid.amount;
+ if (doDrain) {
+ tFluid.amount -= used;
+ setFluidContent(aStack, tFluid);
+ }
+
+ FluidStack drained = tFluid.copy();
+ drained.amount = used;
+ return drained;
+ }
+
+ public FluidStack getFluidContent(ItemStack aStack) {
+ Long[] tStats = getFluidContainerStats(aStack);
+ if (tStats == null || tStats[0] <= 0) return GT_Utility.getFluidForFilledItem(aStack, false);
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ return tNBT == null ? null : FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("GT.FluidContent"));
+ }
+
+ public void setFluidContent(ItemStack aStack, FluidStack aFluid) {
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT == null) tNBT = new NBTTagCompound();
+ else tNBT.removeTag("GT.FluidContent");
+ if (aFluid != null && aFluid.amount > 0)
+ tNBT.setTag("GT.FluidContent", aFluid.writeToNBT(new NBTTagCompound()));
+ if (tNBT.hasNoTags()) aStack.setTagCompound(null);
+ else aStack.setTagCompound(tNBT);
+ isItemStackUsable(aStack);
+ }
+
+ @Override
+ public int getItemStackLimit(ItemStack aStack) {
+ Long[] tStats = getElectricStats(aStack);
+ if (tStats != null && (tStats[3] == -1 || tStats[3] == -3) && getRealCharge(aStack) > 0) return 1;
+ tStats = getFluidContainerStats(aStack);
+ if (tStats != null) return (int) (long) tStats[1];
+ return 64;
+ }
+
+ @Override
+ public final Item getChargedItem(ItemStack itemStack) {
+ return this;
+ }
+
+ @Override
+ public final Item getEmptyItem(ItemStack itemStack) {
+ return this;
+ }
+
+ @Override
+ public final int getTier(ItemStack aStack) {
+ Long[] tStats = getElectricStats(aStack);
+ return (int) (tStats == null ? Integer.MAX_VALUE : tStats[2]);
+ }
+
+ @Override
+ public final String getToolTip(ItemStack aStack) {
+ return null;
+ } // This has its own ToolTip Handler, no need to let the IC2 Handler screw us up at this Point
+
+ @Override
+ public final IElectricItemManager getManager(ItemStack aStack) {
+ return this;
+ } // We are our own Manager
+
+ @Override
+ public final boolean getShareTag() {
+ return true;
+ } // just to be sure.
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {
+ return false;
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {
+ return false;
+ }
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
index d8ef7f8a32..a246e83d7a 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
@@ -1,9 +1,9 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.D1;
-import static gregtech.api.enums.GT_Values.MOD_ID_APC;
-import static gregtech.api.enums.GT_Values.RA;
-import static gregtech.api.enums.GT_Values.RES_PATH_ITEM;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.Optional;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
@@ -18,9 +18,6 @@ import gregtech.api.util.GT_Config;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-
-import java.util.*;
-
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
@@ -32,300 +29,327 @@ import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import squeek.applecore.api.food.FoodValues;
import squeek.applecore.api.food.IEdible;
-import cpw.mods.fml.common.Loader;
-import cpw.mods.fml.common.Optional;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+
+import java.util.*;
+
+import static gregtech.api.enums.GT_Values.*;
/**
* @author Gregorius Techneticies
- *
- * One Item for everything!
- *
- * This brilliant Item Class is used for automatically generating all possible variations of Material Items, like Dusts, Ingots, Gems, Plates and similar.
- * It saves me a ton of work, when adding Items, because I always have to make a new Item SubType for each OreDict Prefix, when adding a new Material.
- *
- * As you can see, up to 32766 Items can be generated using this Class. And the last 766 Items can be custom defined, just to save space and MetaData.
- *
- * These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
+ * <p/>
+ * One Item for everything!
+ * <p/>
+ * This brilliant Item Class is used for automatically generating all possible variations of Material Items, like Dusts, Ingots, Gems, Plates and similar.
+ * It saves me a ton of work, when adding Items, because I always have to make a new Item SubType for each OreDict Prefix, when adding a new Material.
+ * <p/>
+ * As you can see, up to 32766 Items can be generated using this Class. And the last 766 Items can be custom defined, just to save space and MetaData.
+ * <p/>
+ * These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
*/
@Optional.Interface(iface = "squeek.applecore.api.food.IEdible", modid = MOD_ID_APC)
public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements IEdible {
- /**
- * All instances of this Item Class are listed here.
- * This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
- *
- * You can also use the unlocalized Name gotten from getUnlocalizedName() as Key if you want to get a specific Item.
- */
- public static final HashMap<String, GT_MetaGenerated_Item> sInstances = new HashMap<String, GT_MetaGenerated_Item>();
-
+ /**
+ * All instances of this Item Class are listed here.
+ * This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
+ * <p/>
+ * You can also use the unlocalized Name gotten from getUnlocalizedName() as Key if you want to get a specific Item.
+ */
+ public static final HashMap<String, GT_MetaGenerated_Item> sInstances = new HashMap<String, GT_MetaGenerated_Item>();
+
/* ---------- CONSTRUCTOR AND MEMBER VARIABLES ---------- */
-
- public final short mOffset, mItemAmount;
- public final BitSet mEnabledItems;
- public final BitSet mVisibleItems;
- public final IIcon[][] mIconList;
-
- public final HashMap<Short, IFoodStat> mFoodStats = new HashMap<Short, IFoodStat>();
- public final HashMap<Short, Long[]> mElectricStats = new HashMap<Short, Long[]>();
- public final HashMap<Short, Long[]> mFluidContainerStats = new HashMap<Short, Long[]>();
- public final HashMap<Short, Short> mBurnValues = new HashMap<Short, Short>();
-
- /**
- * Creates the Item using these Parameters.
- * @param aUnlocalized The Unlocalized Name of this Item.
- */
- public GT_MetaGenerated_Item(String aUnlocalized, short aOffset, short aItemAmount) {
- super(aUnlocalized);
- setCreativeTab(GregTech_API.TAB_GREGTECH_MATERIALS);
+
+ public final short mOffset, mItemAmount;
+ public final BitSet mEnabledItems;
+ public final BitSet mVisibleItems;
+ public final IIcon[][] mIconList;
+
+ public final HashMap<Short, IFoodStat> mFoodStats = new HashMap<Short, IFoodStat>();
+ public final HashMap<Short, Long[]> mElectricStats = new HashMap<Short, Long[]>();
+ public final HashMap<Short, Long[]> mFluidContainerStats = new HashMap<Short, Long[]>();
+ public final HashMap<Short, Short> mBurnValues = new HashMap<Short, Short>();
+
+ /**
+ * Creates the Item using these Parameters.
+ *
+ * @param aUnlocalized The Unlocalized Name of this Item.
+ */
+ public GT_MetaGenerated_Item(String aUnlocalized, short aOffset, short aItemAmount) {
+ super(aUnlocalized);
+ setCreativeTab(GregTech_API.TAB_GREGTECH_MATERIALS);
setHasSubtypes(true);
setMaxDamage(0);
mEnabledItems = new BitSet(aItemAmount);
- mVisibleItems = new BitSet(aItemAmount);
-
- mOffset = (short)Math.min(32766, aOffset);
- mItemAmount = (short)Math.min(aItemAmount, 32766-mOffset);
- mIconList = new IIcon[aItemAmount][1];
-
+ mVisibleItems = new BitSet(aItemAmount);
+
+ mOffset = (short) Math.min(32766, aOffset);
+ mItemAmount = (short) Math.min(aItemAmount, 32766 - mOffset);
+ mIconList = new IIcon[aItemAmount][1];
+
sInstances.put(getUnlocalizedName(), this);
- }
-
- /**
- * This adds a Custom Item to the ending Range.
- * @param aID The Id of the assigned Item [0 - mItemAmount] (The MetaData gets auto-shifted by +mOffset)
- * @param aEnglish The Default Localized Name of the created Item
- * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip
- * @param aFoodBehavior The Food Value of this Item. Can be null aswell. Just a convenience thing.
- * @param aRandomData The OreDict Names you want to give the Item. Also used for TC Aspects and some other things.
- * @return An ItemStack containing the newly created Item.
- */
- public final ItemStack addItem(int aID, String aEnglish, String aToolTip, Object... aRandomData) {
- if (aToolTip == null) aToolTip = "";
- if (aID >= 0 && aID < mItemAmount) {
- ItemStack rStack = new ItemStack(this, 1, mOffset+aID);
- mEnabledItems.set(aID);
- mVisibleItems.set(aID);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".name", aEnglish);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".tooltip", aToolTip);
- List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
- // Important Stuff to do first
- for (Object tRandomData : aRandomData) if (tRandomData instanceof SubTag) {
- if (tRandomData == SubTag.INVISIBLE) {
- mVisibleItems.set(aID, false);
- continue;
- }
- if (tRandomData == SubTag.NO_UNIFICATION) {
- GT_OreDictUnificator.addToBlacklist(rStack);
- continue;
- }
- }
- // now check for the rest
- for (Object tRandomData : aRandomData) if (tRandomData != null) {
- boolean tUseOreDict = true;
- if (tRandomData instanceof IFoodStat) {
- setFoodBehavior(mOffset+aID, (IFoodStat)tRandomData);
- if (((IFoodStat)tRandomData).getFoodAction(this, rStack) == EnumAction.eat) {
- int tFoodValue = ((IFoodStat)tRandomData).getFoodLevel(this, rStack, null);
- if (tFoodValue > 0) RA.addCannerRecipe(rStack, ItemList.IC2_Food_Can_Empty.get(tFoodValue), ((IFoodStat)tRandomData).isRotten(this, rStack, null)?ItemList.IC2_Food_Can_Spoiled.get(tFoodValue):ItemList.IC2_Food_Can_Filled.get(tFoodValue), null, tFoodValue*100, 1);
- }
- tUseOreDict = false;
- }
- if (tRandomData instanceof IItemBehaviour) {
- addItemBehavior(mOffset+aID, (IItemBehaviour<GT_MetaBase_Item>)tRandomData);
- tUseOreDict = false;
- }
- if (tRandomData instanceof IItemContainer) {
- ((IItemContainer)tRandomData).set(rStack);
- tUseOreDict = false;
- }
- if (tRandomData instanceof SubTag) {
- continue;
- }
- if (tRandomData instanceof TC_AspectStack) {
- ((TC_AspectStack)tRandomData).addToAspectList(tAspects);
- continue;
- }
- if (tRandomData instanceof ItemData) {
- if (GT_Utility.isStringValid(tRandomData)) GT_OreDictUnificator.registerOre(tRandomData, rStack); else GT_OreDictUnificator.addItemData(rStack, (ItemData)tRandomData);
- continue;
- }
- if (tUseOreDict) {
- GT_OreDictUnificator.registerOre(tRandomData, rStack);
- continue;
- }
- }
- if (GregTech_API.sThaumcraftCompat != null) GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(rStack, tAspects, false);
- return rStack;
- }
- return null;
- }
-
- /**
- * Sets a Food Behavior for the Item.
- *
- * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
- * @param aFoodBehavior the Food Behavior you want to add.
- * @return the Item itself for convenience in constructing.
- */
- public final GT_MetaGenerated_Item setFoodBehavior(int aMetaValue, IFoodStat aFoodBehavior) {
- if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length()) return this;
- if (aFoodBehavior == null) mFoodStats.remove((short)aMetaValue); else mFoodStats.put((short)aMetaValue, aFoodBehavior);
- return this;
- }
-
- /**
- * Sets the Furnace Burn Value for the Item.
- *
- * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
- * @param aValue 200 = 1 Burn Process = 500 EU, max = 32767 (that is 81917.5 EU)
- * @return the Item itself for convenience in constructing.
- */
- public final GT_MetaGenerated_Item setBurnValue(int aMetaValue, int aValue) {
- if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length() || aValue < 0) return this;
- if (aValue == 0) mBurnValues.remove((short)aMetaValue); else mBurnValues.put((short)aMetaValue, aValue>Short.MAX_VALUE?Short.MAX_VALUE:(short)aValue);
- return this;
- }
-
- /**
- * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
- * @param aMaxCharge Maximum Charge. (if this is == 0 it will remove the Electric Behavior)
- * @param aTransferLimit Transfer Limit.
- * @param aTier The electric Tier.
- * @param aSpecialData If this Item has a Fixed Charge, like a SingleUse Battery (if > 0).
- * Use -1 if you want to make this Battery chargeable (the use and canUse Functions will still discharge if you just use this)
- * Use -2 if you want to make this Battery dischargeable.
- * Use -3 if you want to make this Battery charge/discharge-able.
- * @return the Item itself for convenience in constructing.
- */
- public final GT_MetaGenerated_Item setElectricStats(int aMetaValue, long aMaxCharge, long aTransferLimit, long aTier, long aSpecialData, boolean aUseAnimations) {
- if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length()) return this;
- if (aMaxCharge == 0) mElectricStats.remove((short)aMetaValue); else {
- mElectricStats.put((short)aMetaValue, new Long[] {aMaxCharge, Math.max(0, aTransferLimit), Math.max(-1, aTier), aSpecialData});
- if (aMetaValue >= mOffset && aUseAnimations) mIconList[aMetaValue-mOffset] = Arrays.copyOf(mIconList[aMetaValue-mOffset], Math.max(9, mIconList[aMetaValue-mOffset].length));
- }
- return this;
- }
-
- /**
- * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
- * @param aMaxCharge Maximum Charge. (if this is == 0 it will remove the Electric Behavior)
- * @param aTransferLimit Transfer Limit.
- * @param aTier The electric Tier.
- * @param aSpecialData If this Item has a Fixed Charge, like a SingleUse Battery (if > 0).
- * Use -1 if you want to make this Battery chargeable (the use and canUse Functions will still discharge if you just use this)
- * Use -2 if you want to make this Battery dischargeable.
- * Use -3 if you want to make this Battery charge/discharge-able.
- * @return the Item itself for convenience in constructing.
- */
- public final GT_MetaGenerated_Item setFluidContainerStats(int aMetaValue, long aCapacity, long aStacksize) {
- if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length()) return this;
- if (aCapacity < 0) mElectricStats.remove((short)aMetaValue); else mFluidContainerStats.put((short)aMetaValue, new Long[] {aCapacity, Math.max(1, aStacksize)});
- return this;
- }
-
- /**
- * @return if this MetaGenerated Item should use my Default Renderer System.
- */
- public boolean useStandardMetaItemRenderer() {
- return true;
- }
-
- /**
- * @return the Color Modulation the Material is going to be rendered with.
- */
- public short[] getRGBa(ItemStack aStack) {
- return Materials._NULL.getRGBA();
- }
-
- /**
- * @return the Icon the Material is going to be rendered with.
- */
- public IIconContainer getIconContainer(int aMetaData) {
- return null;
- }
+ }
+
+ /**
+ * This adds a Custom Item to the ending Range.
+ *
+ * @param aID The Id of the assigned Item [0 - mItemAmount] (The MetaData gets auto-shifted by +mOffset)
+ * @param aEnglish The Default Localized Name of the created Item
+ * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip
+ * @param aFoodBehavior The Food Value of this Item. Can be null aswell. Just a convenience thing.
+ * @param aRandomData The OreDict Names you want to give the Item. Also used for TC Aspects and some other things.
+ * @return An ItemStack containing the newly created Item.
+ */
+ public final ItemStack addItem(int aID, String aEnglish, String aToolTip, Object... aRandomData) {
+ if (aToolTip == null) aToolTip = "";
+ if (aID >= 0 && aID < mItemAmount) {
+ ItemStack rStack = new ItemStack(this, 1, mOffset + aID);
+ mEnabledItems.set(aID);
+ mVisibleItems.set(aID);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".name", aEnglish);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".tooltip", aToolTip);
+ List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
+ // Important Stuff to do first
+ for (Object tRandomData : aRandomData)
+ if (tRandomData instanceof SubTag) {
+ if (tRandomData == SubTag.INVISIBLE) {
+ mVisibleItems.set(aID, false);
+ continue;
+ }
+ if (tRandomData == SubTag.NO_UNIFICATION) {
+ GT_OreDictUnificator.addToBlacklist(rStack);
+ continue;
+ }
+ }
+ // now check for the rest
+ for (Object tRandomData : aRandomData)
+ if (tRandomData != null) {
+ boolean tUseOreDict = true;
+ if (tRandomData instanceof IFoodStat) {
+ setFoodBehavior(mOffset + aID, (IFoodStat) tRandomData);
+ if (((IFoodStat) tRandomData).getFoodAction(this, rStack) == EnumAction.eat) {
+ int tFoodValue = ((IFoodStat) tRandomData).getFoodLevel(this, rStack, null);
+ if (tFoodValue > 0)
+ RA.addCannerRecipe(rStack, ItemList.IC2_Food_Can_Empty.get(tFoodValue), ((IFoodStat) tRandomData).isRotten(this, rStack, null) ? ItemList.IC2_Food_Can_Spoiled.get(tFoodValue) : ItemList.IC2_Food_Can_Filled.get(tFoodValue), null, tFoodValue * 100, 1);
+ }
+ tUseOreDict = false;
+ }
+ if (tRandomData instanceof IItemBehaviour) {
+ addItemBehavior(mOffset + aID, (IItemBehaviour<GT_MetaBase_Item>) tRandomData);
+ tUseOreDict = false;
+ }
+ if (tRandomData instanceof IItemContainer) {
+ ((IItemContainer) tRandomData).set(rStack);
+ tUseOreDict = false;
+ }
+ if (tRandomData instanceof SubTag) {
+ continue;
+ }
+ if (tRandomData instanceof TC_AspectStack) {
+ ((TC_AspectStack) tRandomData).addToAspectList(tAspects);
+ continue;
+ }
+ if (tRandomData instanceof ItemData) {
+ if (GT_Utility.isStringValid(tRandomData))
+ GT_OreDictUnificator.registerOre(tRandomData, rStack);
+ else GT_OreDictUnificator.addItemData(rStack, (ItemData) tRandomData);
+ continue;
+ }
+ if (tUseOreDict) {
+ GT_OreDictUnificator.registerOre(tRandomData, rStack);
+ continue;
+ }
+ }
+ if (GregTech_API.sThaumcraftCompat != null)
+ GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(rStack, tAspects, false);
+ return rStack;
+ }
+ return null;
+ }
+
+ /**
+ * Sets a Food Behavior for the Item.
+ *
+ * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
+ * @param aFoodBehavior the Food Behavior you want to add.
+ * @return the Item itself for convenience in constructing.
+ */
+ public final GT_MetaGenerated_Item setFoodBehavior(int aMetaValue, IFoodStat aFoodBehavior) {
+ if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length()) return this;
+ if (aFoodBehavior == null) mFoodStats.remove((short) aMetaValue);
+ else mFoodStats.put((short) aMetaValue, aFoodBehavior);
+ return this;
+ }
+
+ /**
+ * Sets the Furnace Burn Value for the Item.
+ *
+ * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
+ * @param aValue 200 = 1 Burn Process = 500 EU, max = 32767 (that is 81917.5 EU)
+ * @return the Item itself for convenience in constructing.
+ */
+ public final GT_MetaGenerated_Item setBurnValue(int aMetaValue, int aValue) {
+ if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length() || aValue < 0) return this;
+ if (aValue == 0) mBurnValues.remove((short) aMetaValue);
+ else mBurnValues.put((short) aMetaValue, aValue > Short.MAX_VALUE ? Short.MAX_VALUE : (short) aValue);
+ return this;
+ }
+
+ /**
+ * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
+ * @param aMaxCharge Maximum Charge. (if this is == 0 it will remove the Electric Behavior)
+ * @param aTransferLimit Transfer Limit.
+ * @param aTier The electric Tier.
+ * @param aSpecialData If this Item has a Fixed Charge, like a SingleUse Battery (if > 0).
+ * Use -1 if you want to make this Battery chargeable (the use and canUse Functions will still discharge if you just use this)
+ * Use -2 if you want to make this Battery dischargeable.
+ * Use -3 if you want to make this Battery charge/discharge-able.
+ * @return the Item itself for convenience in constructing.
+ */
+ public final GT_MetaGenerated_Item setElectricStats(int aMetaValue, long aMaxCharge, long aTransferLimit, long aTier, long aSpecialData, boolean aUseAnimations) {
+ if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length()) return this;
+ if (aMaxCharge == 0) mElectricStats.remove((short) aMetaValue);
+ else {
+ mElectricStats.put((short) aMetaValue, new Long[]{aMaxCharge, Math.max(0, aTransferLimit), Math.max(-1, aTier), aSpecialData});
+ if (aMetaValue >= mOffset && aUseAnimations)
+ mIconList[aMetaValue - mOffset] = Arrays.copyOf(mIconList[aMetaValue - mOffset], Math.max(9, mIconList[aMetaValue - mOffset].length));
+ }
+ return this;
+ }
+
+ /**
+ * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
+ * @param aMaxCharge Maximum Charge. (if this is == 0 it will remove the Electric Behavior)
+ * @param aTransferLimit Transfer Limit.
+ * @param aTier The electric Tier.
+ * @param aSpecialData If this Item has a Fixed Charge, like a SingleUse Battery (if > 0).
+ * Use -1 if you want to make this Battery chargeable (the use and canUse Functions will still discharge if you just use this)
+ * Use -2 if you want to make this Battery dischargeable.
+ * Use -3 if you want to make this Battery charge/discharge-able.
+ * @return the Item itself for convenience in constructing.
+ */
+ public final GT_MetaGenerated_Item setFluidContainerStats(int aMetaValue, long aCapacity, long aStacksize) {
+ if (aMetaValue < 0 || aMetaValue >= mOffset + mEnabledItems.length()) return this;
+ if (aCapacity < 0) mElectricStats.remove((short) aMetaValue);
+ else mFluidContainerStats.put((short) aMetaValue, new Long[]{aCapacity, Math.max(1, aStacksize)});
+ return this;
+ }
+
+ /**
+ * @return if this MetaGenerated Item should use my Default Renderer System.
+ */
+ public boolean useStandardMetaItemRenderer() {
+ return true;
+ }
+
+ /**
+ * @return the Color Modulation the Material is going to be rendered with.
+ */
+ public short[] getRGBa(ItemStack aStack) {
+ return Materials._NULL.getRGBA();
+ }
+
+ /**
+ * @return the Icon the Material is going to be rendered with.
+ */
+ public IIconContainer getIconContainer(int aMetaData) {
+ return null;
+ }
/* ---------- INTERNAL OVERRIDES ---------- */
-
+
@Override
- public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- IFoodStat tStat = mFoodStats.get((short)getDamage(aStack));
- if (tStat != null && aPlayer.canEat(tStat.alwaysEdible(this, aStack, aPlayer))) aPlayer.setItemInUse(aStack, 32);
- return super.onItemRightClick(aStack, aWorld, aPlayer);
+ public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ IFoodStat tStat = mFoodStats.get((short) getDamage(aStack));
+ if (tStat != null && aPlayer.canEat(tStat.alwaysEdible(this, aStack, aPlayer)))
+ aPlayer.setItemInUse(aStack, 32);
+ return super.onItemRightClick(aStack, aWorld, aPlayer);
}
-
+
@Override
public int getMaxItemUseDuration(ItemStack aStack) {
- return mFoodStats.get((short)getDamage(aStack)) == null ? 0 : 32;
+ return mFoodStats.get((short) getDamage(aStack)) == null ? 0 : 32;
}
-
+
@Override
- public EnumAction getItemUseAction(ItemStack aStack) {
- IFoodStat tStat = mFoodStats.get((short)getDamage(aStack));
+ public EnumAction getItemUseAction(ItemStack aStack) {
+ IFoodStat tStat = mFoodStats.get((short) getDamage(aStack));
return tStat == null ? EnumAction.none : tStat.getFoodAction(this, aStack);
}
-
+
@Override
- public final ItemStack onEaten(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- IFoodStat tStat = mFoodStats.get((short)getDamage(aStack));
- if (tStat != null) {
- if (Loader.isModLoaded(MOD_ID_APC)) {
- aPlayer.getFoodStats().func_151686_a((ItemFood)GT_Utility.callConstructor("squeek.applecore.api.food.ItemFoodProxy.ItemFoodProxy", 0, null, true, this), aStack);
- } else {
- aPlayer.getFoodStats().addStats(tStat.getFoodLevel(this, aStack, aPlayer), tStat.getSaturation(this, aStack, aPlayer));
- }
+ public final ItemStack onEaten(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ IFoodStat tStat = mFoodStats.get((short) getDamage(aStack));
+ if (tStat != null) {
+ if (Loader.isModLoaded(MOD_ID_APC)) {
+ aPlayer.getFoodStats().func_151686_a((ItemFood) GT_Utility.callConstructor("squeek.applecore.api.food.ItemFoodProxy.ItemFoodProxy", 0, null, true, this), aStack);
+ } else {
+ aPlayer.getFoodStats().addStats(tStat.getFoodLevel(this, aStack, aPlayer), tStat.getSaturation(this, aStack, aPlayer));
+ }
tStat.onEaten(this, aStack, aPlayer);
- }
+ }
return aStack;
}
-
- @Override
- @Optional.Method(modid = MOD_ID_APC)
- public FoodValues getFoodValues(ItemStack aStack) {
- IFoodStat tStat = mFoodStats.get((short)getDamage(aStack));
- return tStat==null?null:new FoodValues(tStat.getFoodLevel(this, aStack, null), tStat.getSaturation(this, aStack, null));
- }
-
- @Override
+
+ @Override
+ @Optional.Method(modid = MOD_ID_APC)
+ public FoodValues getFoodValues(ItemStack aStack) {
+ IFoodStat tStat = mFoodStats.get((short) getDamage(aStack));
+ return tStat == null ? null : new FoodValues(tStat.getFoodLevel(this, aStack, null), tStat.getSaturation(this, aStack, null));
+ }
+
+ @Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0, j = mEnabledItems.length(); i < j; i++) if (mVisibleItems.get(i) || (D1 && mEnabledItems.get(i))) {
- Long[] tStats = mElectricStats.get((short)(mOffset+i));
- if (tStats != null && tStats[3] < 0) {
- ItemStack tStack = new ItemStack(this, 1, mOffset+i);
- setCharge(tStack, Math.abs(tStats[0]));
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
- if (tStats == null || tStats[3] != -2) {
- ItemStack tStack = new ItemStack(this, 1, mOffset+i);
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
- }
+ for (int i = 0, j = mEnabledItems.length(); i < j; i++)
+ if (mVisibleItems.get(i) || (D1 && mEnabledItems.get(i))) {
+ Long[] tStats = mElectricStats.get((short) (mOffset + i));
+ if (tStats != null && tStats[3] < 0) {
+ ItemStack tStack = new ItemStack(this, 1, mOffset + i);
+ setCharge(tStack, Math.abs(tStats[0]));
+ isItemStackUsable(tStack);
+ aList.add(tStack);
+ }
+ if (tStats == null || tStats[3] != -2) {
+ ItemStack tStack = new ItemStack(this, 1, mOffset + i);
+ isItemStackUsable(tStack);
+ aList.add(tStack);
+ }
+ }
}
-
- @Override
+
+ @Override
@SideOnly(Side.CLIENT)
public final void registerIcons(IIconRegister aIconRegister) {
- for (short i = 0, j = (short)mEnabledItems.length(); i < j; i++) if (mEnabledItems.get(i)) {
- for (byte k = 1; k < mIconList[i].length; k++) {
- mIconList[i][k] = aIconRegister.registerIcon(RES_PATH_ITEM + (GT_Config.troll?"troll":getUnlocalizedName() + "/" + i + "/" + k));
- }
- mIconList[i][0] = aIconRegister.registerIcon(RES_PATH_ITEM + (GT_Config.troll?"troll":getUnlocalizedName() + "/" + i));
- }
+ for (short i = 0, j = (short) mEnabledItems.length(); i < j; i++)
+ if (mEnabledItems.get(i)) {
+ for (byte k = 1; k < mIconList[i].length; k++) {
+ mIconList[i][k] = aIconRegister.registerIcon(RES_PATH_ITEM + (GT_Config.troll ? "troll" : getUnlocalizedName() + "/" + i + "/" + k));
+ }
+ mIconList[i][0] = aIconRegister.registerIcon(RES_PATH_ITEM + (GT_Config.troll ? "troll" : getUnlocalizedName() + "/" + i));
+ }
+ }
+
+ @Override
+ public final Long[] getElectricStats(ItemStack aStack) {
+ return mElectricStats.get((short) aStack.getItemDamage());
+ }
+
+ @Override
+ public final Long[] getFluidContainerStats(ItemStack aStack) {
+ return mFluidContainerStats.get((short) aStack.getItemDamage());
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {
+ return false;
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {
+ return false;
}
-
- @Override
- public final Long[] getElectricStats(ItemStack aStack) {
- return mElectricStats.get((short)aStack.getItemDamage());
- }
-
- @Override
- public final Long[] getFluidContainerStats(ItemStack aStack) {
- return mFluidContainerStats.get((short)aStack.getItemDamage());
- }
-
- @Override public int getItemEnchantability() {return 0;}
- @Override public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {return false;}
- @Override public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {return false;}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X01.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X01.java
index 76743abd74..74e50e8694 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X01.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X01.java
@@ -1,6 +1,7 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.M;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
@@ -8,152 +9,164 @@ import gregtech.api.interfaces.IIconContainer;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-
-import java.util.List;
-
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+
+import java.util.List;
+
+import static gregtech.api.enums.GT_Values.M;
/**
* @author Gregorius Techneticies
- *
- * One Item for everything!
- *
- * This brilliant Item Class is used for automatically generating all possible variations of Material Items, like Dusts, Ingots, Gems, Plates and similar.
- * It saves me a ton of work, when adding Items, because I always have to make a new Item SubType for each OreDict Prefix, when adding a new Material.
- *
- * As you can see, up to 32766 Items can be generated using this Class. And the last 766 Items can be custom defined, just to save space and MetaData.
- *
- * These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
+ * <p/>
+ * One Item for everything!
+ * <p/>
+ * This brilliant Item Class is used for automatically generating all possible variations of Material Items, like Dusts, Ingots, Gems, Plates and similar.
+ * It saves me a ton of work, when adding Items, because I always have to make a new Item SubType for each OreDict Prefix, when adding a new Material.
+ * <p/>
+ * As you can see, up to 32766 Items can be generated using this Class. And the last 766 Items can be custom defined, just to save space and MetaData.
+ * <p/>
+ * These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
*/
public abstract class GT_MetaGenerated_Item_X01 extends GT_MetaGenerated_Item {
-
- protected final OrePrefixes mPrefix;
- protected final int mIconSetIndex;
-
- /**
- * Creates the Item using these Parameters. This is for the new 1 Item = 1 Prefix System.
- * @param aUnlocalized The Unlocalized Name of this Item.
- * @param aGeneratedPrefix The OreDict Prefix you want to have generated.
- * @param aIconSetIndex The TextureSet Index to be used. -1 for Defaulting to the Data contained in the Prefix. (this is only to be used for selecting the Icon in getIconContainer, nothing else)
- */
- public GT_MetaGenerated_Item_X01(String aUnlocalized, OrePrefixes aGeneratedPrefix, int aIconSetIndex) {
- super(aUnlocalized, (short)32000, (short)766);
- mPrefix = aGeneratedPrefix;
- mIconSetIndex = aIconSetIndex>=0?aIconSetIndex:aGeneratedPrefix.mTextureIndex>=0?aGeneratedPrefix.mTextureIndex:0;
-
+
+ protected final OrePrefixes mPrefix;
+ protected final int mIconSetIndex;
+
+ /**
+ * Creates the Item using these Parameters. This is for the new 1 Item = 1 Prefix System.
+ *
+ * @param aUnlocalized The Unlocalized Name of this Item.
+ * @param aGeneratedPrefix The OreDict Prefix you want to have generated.
+ * @param aIconSetIndex The TextureSet Index to be used. -1 for Defaulting to the Data contained in the Prefix. (this is only to be used for selecting the Icon in getIconContainer, nothing else)
+ */
+ public GT_MetaGenerated_Item_X01(String aUnlocalized, OrePrefixes aGeneratedPrefix, int aIconSetIndex) {
+ super(aUnlocalized, (short) 32000, (short) 766);
+ mPrefix = aGeneratedPrefix;
+ mIconSetIndex = aIconSetIndex >= 0 ? aIconSetIndex : aGeneratedPrefix.mTextureIndex >= 0 ? aGeneratedPrefix.mTextureIndex : 0;
+
for (int i = 0; i < GregTech_API.sGeneratedMaterials.length; i++) {
- OrePrefixes tPrefix = mPrefix;
- if (tPrefix == null) continue;
- Materials tMaterial = GregTech_API.sGeneratedMaterials[i];
- if (tMaterial == null) continue;
- if (mPrefix.doGenerateItem(tMaterial)) {
- ItemStack tStack = new ItemStack(this, 1, i);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", getDefaultLocalization(tPrefix, tMaterial, i));
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(tPrefix.mMaterialAmount / M));
- String tOreName = getOreDictString(tPrefix, tMaterial);
- tPrefix = OrePrefixes.getOrePrefix(tOreName);
- if (tPrefix != null && tPrefix.mIsUnificatable) {
- GT_OreDictUnificator.set(tPrefix, OrePrefixes.getMaterial(tOreName, tPrefix), tStack);
- } else {
- GT_OreDictUnificator.registerOre(tOreName, tStack);
- }
- }
- }
- }
-
+ OrePrefixes tPrefix = mPrefix;
+ if (tPrefix == null) continue;
+ Materials tMaterial = GregTech_API.sGeneratedMaterials[i];
+ if (tMaterial == null) continue;
+ if (mPrefix.doGenerateItem(tMaterial)) {
+ ItemStack tStack = new ItemStack(this, 1, i);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", getDefaultLocalization(tPrefix, tMaterial, i));
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(tPrefix.mMaterialAmount / M));
+ String tOreName = getOreDictString(tPrefix, tMaterial);
+ tPrefix = OrePrefixes.getOrePrefix(tOreName);
+ if (tPrefix != null && tPrefix.mIsUnificatable) {
+ GT_OreDictUnificator.set(tPrefix, OrePrefixes.getMaterial(tOreName, tPrefix), tStack);
+ } else {
+ GT_OreDictUnificator.registerOre(tOreName, tStack);
+ }
+ }
+ }
+ }
+
/* ---------- OVERRIDEABLE FUNCTIONS ---------- */
-
- /**
- * @param aPrefix the OreDict Prefix
- * @param aMaterial the Material
- * @param aMetaData a Index from [0 - 31999]
- * @return the Localized Name when default LangFiles are used.
- */
- public String getDefaultLocalization(OrePrefixes aPrefix, Materials aMaterial, int aMetaData) {
- return aPrefix.getDefaultLocalNameForItem(aMaterial);
- }
-
- /**
- * @param aPrefix always != null
- * @param aMaterial always != null
- * @param aDoShowAllItems this is the Configuration Setting of the User, if he wants to see all the Stuff like Tiny Dusts or Crushed Ores as well.
- * @return if this Item should be visible in NEI or Creative
- */
- public boolean doesShowInCreative(OrePrefixes aPrefix, Materials aMaterial, boolean aDoShowAllItems) {
- return true;
- }
-
- /**
- * @return the name of the Item to be registered at the OreDict.
- */
- public String getOreDictString(OrePrefixes aPrefix, Materials aMaterial) {
- return aPrefix.get(aMaterial).toString();
- }
-
- public IIconContainer getIconContainer(int aMetaData, Materials aMaterial) {
- return aMaterial.mIconSet.mTextures[mIconSetIndex];
- }
+
+ /**
+ * @param aPrefix the OreDict Prefix
+ * @param aMaterial the Material
+ * @param aMetaData a Index from [0 - 31999]
+ * @return the Localized Name when default LangFiles are used.
+ */
+ public String getDefaultLocalization(OrePrefixes aPrefix, Materials aMaterial, int aMetaData) {
+ return aPrefix.getDefaultLocalNameForItem(aMaterial);
+ }
+
+ /**
+ * @param aPrefix always != null
+ * @param aMaterial always != null
+ * @param aDoShowAllItems this is the Configuration Setting of the User, if he wants to see all the Stuff like Tiny Dusts or Crushed Ores as well.
+ * @return if this Item should be visible in NEI or Creative
+ */
+ public boolean doesShowInCreative(OrePrefixes aPrefix, Materials aMaterial, boolean aDoShowAllItems) {
+ return true;
+ }
+
+ /**
+ * @return the name of the Item to be registered at the OreDict.
+ */
+ public String getOreDictString(OrePrefixes aPrefix, Materials aMaterial) {
+ return aPrefix.get(aMaterial).toString();
+ }
+
+ public IIconContainer getIconContainer(int aMetaData, Materials aMaterial) {
+ return aMaterial.mIconSet.mTextures[mIconSetIndex];
+ }
/* ---------- INTERNAL OVERRIDES ---------- */
-
- @Override
+
+ @Override
public ItemStack getContainerItem(ItemStack aStack) {
- int aMetaData = aStack.getItemDamage();
- if (aMetaData < GregTech_API.sGeneratedMaterials.length && aMetaData >= 0) {
- Materials aMaterial = GregTech_API.sGeneratedMaterials[aMetaData];
- if (aMaterial != null && aMaterial != Materials.Empty && aMaterial != Materials._NULL) {
- return GT_Utility.copyAmount(1, mPrefix.mContainerItem);
- }
- }
- return null;
+ int aMetaData = aStack.getItemDamage();
+ if (aMetaData < GregTech_API.sGeneratedMaterials.length && aMetaData >= 0) {
+ Materials aMaterial = GregTech_API.sGeneratedMaterials[aMetaData];
+ if (aMaterial != null && aMaterial != Materials.Empty && aMaterial != Materials._NULL) {
+ return GT_Utility.copyAmount(1, mPrefix.mContainerItem);
+ }
+ }
+ return null;
}
-
- @Override
- public short[] getRGBa(ItemStack aStack) {
- int aMetaData = getDamage(aStack);
- return aMetaData < GregTech_API.sGeneratedMaterials.length && GregTech_API.sGeneratedMaterials[aMetaData] != null ? GregTech_API.sGeneratedMaterials[aMetaData].mRGBa : Materials._NULL.mRGBa;
- }
-
- @Override
- public final IIconContainer getIconContainer(int aMetaData) {
- return aMetaData < GregTech_API.sGeneratedMaterials.length && GregTech_API.sGeneratedMaterials[aMetaData] != null ? getIconContainer(aMetaData, GregTech_API.sGeneratedMaterials[aMetaData]) : null;
+
+ @Override
+ public short[] getRGBa(ItemStack aStack) {
+ int aMetaData = getDamage(aStack);
+ return aMetaData < GregTech_API.sGeneratedMaterials.length && GregTech_API.sGeneratedMaterials[aMetaData] != null ? GregTech_API.sGeneratedMaterials[aMetaData].mRGBa : Materials._NULL.mRGBa;
}
-
- @Override
+
+ @Override
+ public final IIconContainer getIconContainer(int aMetaData) {
+ return aMetaData < GregTech_API.sGeneratedMaterials.length && GregTech_API.sGeneratedMaterials[aMetaData] != null ? getIconContainer(aMetaData, GregTech_API.sGeneratedMaterials[aMetaData]) : null;
+ }
+
+ @Override
@SideOnly(Side.CLIENT)
public final void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < GregTech_API.sGeneratedMaterials.length; i++) if (mPrefix.doGenerateItem(GregTech_API.sGeneratedMaterials[i]) && doesShowInCreative(mPrefix, GregTech_API.sGeneratedMaterials[i], GregTech_API.sDoShowAllItemsInCreative)) {
- ItemStack tStack = new ItemStack(this, 1, i);
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
+ for (int i = 0; i < GregTech_API.sGeneratedMaterials.length; i++)
+ if (mPrefix.doGenerateItem(GregTech_API.sGeneratedMaterials[i]) && doesShowInCreative(mPrefix, GregTech_API.sGeneratedMaterials[i], GregTech_API.sDoShowAllItemsInCreative)) {
+ ItemStack tStack = new ItemStack(this, 1, i);
+ isItemStackUsable(tStack);
+ aList.add(tStack);
+ }
super.getSubItems(var1, aCreativeTab, aList);
}
-
- @Override
+
+ @Override
public final IIcon getIconFromDamage(int aMetaData) {
- if (aMetaData < 0) return null;
- if (aMetaData < GregTech_API.sGeneratedMaterials.length) {
- Materials tMaterial = GregTech_API.sGeneratedMaterials[aMetaData];
- if (tMaterial == null) return null;
- IIconContainer tIcon = getIconContainer(aMetaData, tMaterial);
- if (tIcon != null) return tIcon.getIcon();
- return null;
- }
- return aMetaData>=mOffset&&aMetaData-mOffset<mIconList.length?mIconList[aMetaData-mOffset][0]:null;
+ if (aMetaData < 0) return null;
+ if (aMetaData < GregTech_API.sGeneratedMaterials.length) {
+ Materials tMaterial = GregTech_API.sGeneratedMaterials[aMetaData];
+ if (tMaterial == null) return null;
+ IIconContainer tIcon = getIconContainer(aMetaData, tMaterial);
+ if (tIcon != null) return tIcon.getIcon();
+ return null;
+ }
+ return aMetaData >= mOffset && aMetaData - mOffset < mIconList.length ? mIconList[aMetaData - mOffset][0] : null;
+ }
+
+ @Override
+ public int getItemStackLimit(ItemStack aStack) {
+ return getDamage(aStack) < mOffset ? Math.min(super.getItemStackLimit(aStack), mPrefix.mDefaultStackSize) : super.getItemStackLimit(aStack);
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {
+ return false;
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {
+ return false;
}
-
- @Override
- public int getItemStackLimit(ItemStack aStack) {
- return getDamage(aStack) < mOffset ? Math.min(super.getItemStackLimit(aStack), mPrefix.mDefaultStackSize) : super.getItemStackLimit(aStack);
- }
-
- @Override public int getItemEnchantability() {return 0;}
- @Override public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {return false;}
- @Override public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {return false;}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X32.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X32.java
index b6ef164364..38ed38bd31 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X32.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item_X32.java
@@ -1,6 +1,7 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.M;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
@@ -8,162 +9,166 @@ import gregtech.api.interfaces.IIconContainer;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-
-import java.util.Arrays;
-import java.util.List;
-
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static gregtech.api.enums.GT_Values.M;
/**
* @author Gregorius Techneticies
- *
- * One Item for everything!
- *
- * This brilliant Item Class is used for automatically generating all possible variations of Material Items, like Dusts, Ingots, Gems, Plates and similar.
- * It saves me a ton of work, when adding Items, because I always have to make a new Item SubType for each OreDict Prefix, when adding a new Material.
- *
- * As you can see, up to 32766 Items can be generated using this Class. And the last 766 Items can be custom defined, just to save space and MetaData.
- *
- * These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
+ * <p/>
+ * One Item for everything!
+ * <p/>
+ * This brilliant Item Class is used for automatically generating all possible variations of Material Items, like Dusts, Ingots, Gems, Plates and similar.
+ * It saves me a ton of work, when adding Items, because I always have to make a new Item SubType for each OreDict Prefix, when adding a new Material.
+ * <p/>
+ * As you can see, up to 32766 Items can be generated using this Class. And the last 766 Items can be custom defined, just to save space and MetaData.
+ * <p/>
+ * These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
*/
public abstract class GT_MetaGenerated_Item_X32 extends GT_MetaGenerated_Item {
-
- protected final OrePrefixes[] mGeneratedPrefixList;
-
- /**
- * 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_MetaGenerated_Item_X32(String aUnlocalized, OrePrefixes... aGeneratedPrefixList) {
- super(aUnlocalized, (short)32000, (short)766);
- mGeneratedPrefixList = Arrays.copyOf(aGeneratedPrefixList, 32);
-
+
+ protected final OrePrefixes[] mGeneratedPrefixList;
+
+ /**
+ * 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_MetaGenerated_Item_X32(String aUnlocalized, OrePrefixes... aGeneratedPrefixList) {
+ super(aUnlocalized, (short) 32000, (short) 766);
+ mGeneratedPrefixList = Arrays.copyOf(aGeneratedPrefixList, 32);
+
for (int i = 0; i < 32000; i++) {
- OrePrefixes tPrefix = mGeneratedPrefixList[i / 1000];
- if (tPrefix == null) continue;
- Materials tMaterial = GregTech_API.sGeneratedMaterials[i % 1000];
- if (tMaterial == null) continue;
- if (doesMaterialAllowGeneration(tPrefix, tMaterial)) {
- ItemStack tStack = new ItemStack(this, 1, i);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", getDefaultLocalization(tPrefix, tMaterial, i));
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(tPrefix.mMaterialAmount / M));
- if (tPrefix.mIsUnificatable) {
- GT_OreDictUnificator.set(tPrefix, tMaterial, tStack);
- } else {
- GT_OreDictUnificator.registerOre(tPrefix.get(tMaterial), tStack);
- }
- if((tPrefix==OrePrefixes.stick||tPrefix==OrePrefixes.wireFine||tPrefix==OrePrefixes.ingot)&&(tMaterial==Materials.Lead||tMaterial==Materials.Tin||tMaterial==Materials.SolderingAlloy)){GregTech_API.sSolderingMetalList.add(tStack);}
- }
- }
- }
-
+ OrePrefixes tPrefix = mGeneratedPrefixList[i / 1000];
+ if (tPrefix == null) continue;
+ Materials tMaterial = GregTech_API.sGeneratedMaterials[i % 1000];
+ if (tMaterial == null) continue;
+ if (doesMaterialAllowGeneration(tPrefix, tMaterial)) {
+ ItemStack tStack = new ItemStack(this, 1, i);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", getDefaultLocalization(tPrefix, tMaterial, i));
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(tPrefix.mMaterialAmount / M));
+ if (tPrefix.mIsUnificatable) {
+ GT_OreDictUnificator.set(tPrefix, tMaterial, tStack);
+ } else {
+ GT_OreDictUnificator.registerOre(tPrefix.get(tMaterial), tStack);
+ }
+ if ((tPrefix == OrePrefixes.stick || tPrefix == OrePrefixes.wireFine || tPrefix == OrePrefixes.ingot) && (tMaterial == Materials.Lead || tMaterial == Materials.Tin || tMaterial == Materials.SolderingAlloy)) {
+ GregTech_API.sSolderingMetalList.add(tStack);
+ }
+ }
+ }
+ }
+
/* ---------- OVERRIDEABLE FUNCTIONS ---------- */
-
- /**
- * @return the Color Modulation the Material is going to be rendered with.
- */
- @Override
- public short[] getRGBa(ItemStack aStack) {
- Materials tMaterial = GregTech_API.sGeneratedMaterials[getDamage(aStack) % 1000];
- return tMaterial == null ? Materials._NULL.mRGBa : tMaterial.mRGBa;
- }
-
- /**
- * @param aPrefix this can be null, you have to return false in that case
- * @param aMaterial this can be null, you have to return false in that case
- * @return if this Item should be generated and visible.
- */
- public boolean doesMaterialAllowGeneration(OrePrefixes aPrefix, Materials aMaterial) {
- // You have to check for at least these Conditions in every Case! So add a super Call like the following for this before executing your Code:
- // if (!super.doesMaterialAllowGeneration(aPrefix, aMaterial)) return false;
- return aPrefix != null && aMaterial != null && aPrefix.doGenerateItem(aMaterial);
- }
+
+ /**
+ * @return the Color Modulation the Material is going to be rendered with.
+ */
+ @Override
+ public short[] getRGBa(ItemStack aStack) {
+ Materials tMaterial = GregTech_API.sGeneratedMaterials[getDamage(aStack) % 1000];
+ return tMaterial == null ? Materials._NULL.mRGBa : tMaterial.mRGBa;
+ }
+
+ /**
+ * @param aPrefix this can be null, you have to return false in that case
+ * @param aMaterial this can be null, you have to return false in that case
+ * @return if this Item should be generated and visible.
+ */
+ public boolean doesMaterialAllowGeneration(OrePrefixes aPrefix, Materials aMaterial) {
+ // You have to check for at least these Conditions in every Case! So add a super Call like the following for this before executing your Code:
+ // if (!super.doesMaterialAllowGeneration(aPrefix, aMaterial)) return false;
+ return aPrefix != null && aMaterial != null && aPrefix.doGenerateItem(aMaterial);
+ }
/* ---------- OVERRIDEABLE FUNCTIONS ---------- */
-
- /**
- * @param aPrefix the OreDict Prefix
- * @param aMaterial the Material
- * @param aMetaData a Index from [0 - 31999]
- * @return the Localized Name when default LangFiles are used.
- */
- public String getDefaultLocalization(OrePrefixes aPrefix, Materials aMaterial, int aMetaData) {
- return aPrefix.getDefaultLocalNameForItem(aMaterial);
- }
-
- /**
- * @param aMetaData a Index from [0 - 31999]
- * @param aMaterial the Material
- * @return an Icon Container for the Item Display.
- */
- public final IIconContainer getIconContainer(int aMetaData, Materials aMaterial) {
- return mGeneratedPrefixList[aMetaData / 1000] != null && mGeneratedPrefixList[aMetaData / 1000].mTextureIndex >= 0 ? aMaterial.mIconSet.mTextures[mGeneratedPrefixList[aMetaData / 1000].mTextureIndex] : null;
- }
-
- /**
- * @param aPrefix always != null
- * @param aMaterial always != null
- * @param aDoShowAllItems this is the Configuration Setting of the User, if he wants to see all the Stuff like Tiny Dusts or Crushed Ores as well.
- * @return if this Item should be visible in NEI or Creative
- */
- public boolean doesShowInCreative(OrePrefixes aPrefix, Materials aMaterial, boolean aDoShowAllItems) {
- return true;
- }
+
+ /**
+ * @param aPrefix the OreDict Prefix
+ * @param aMaterial the Material
+ * @param aMetaData a Index from [0 - 31999]
+ * @return the Localized Name when default LangFiles are used.
+ */
+ public String getDefaultLocalization(OrePrefixes aPrefix, Materials aMaterial, int aMetaData) {
+ return aPrefix.getDefaultLocalNameForItem(aMaterial);
+ }
+
+ /**
+ * @param aMetaData a Index from [0 - 31999]
+ * @param aMaterial the Material
+ * @return an Icon Container for the Item Display.
+ */
+ public final IIconContainer getIconContainer(int aMetaData, Materials aMaterial) {
+ return mGeneratedPrefixList[aMetaData / 1000] != null && mGeneratedPrefixList[aMetaData / 1000].mTextureIndex >= 0 ? aMaterial.mIconSet.mTextures[mGeneratedPrefixList[aMetaData / 1000].mTextureIndex] : null;
+ }
+
+ /**
+ * @param aPrefix always != null
+ * @param aMaterial always != null
+ * @param aDoShowAllItems this is the Configuration Setting of the User, if he wants to see all the Stuff like Tiny Dusts or Crushed Ores as well.
+ * @return if this Item should be visible in NEI or Creative
+ */
+ public boolean doesShowInCreative(OrePrefixes aPrefix, Materials aMaterial, boolean aDoShowAllItems) {
+ return true;
+ }
/* ---------- INTERNAL OVERRIDES ---------- */
-
- @Override
+
+ @Override
public ItemStack getContainerItem(ItemStack aStack) {
- int aDamage = aStack.getItemDamage();
- if (aDamage < 32000 && aDamage >= 0) {
- Materials aMaterial = GregTech_API.sGeneratedMaterials[aDamage % 1000];
- if (aMaterial != null && aMaterial != Materials.Empty && aMaterial != Materials._NULL) {
- OrePrefixes aPrefix = mGeneratedPrefixList[aDamage / 1000];
- if (aPrefix != null) return GT_Utility.copyAmount(1, aPrefix.mContainerItem);
- }
- }
- return null;
+ int aDamage = aStack.getItemDamage();
+ if (aDamage < 32000 && aDamage >= 0) {
+ Materials aMaterial = GregTech_API.sGeneratedMaterials[aDamage % 1000];
+ if (aMaterial != null && aMaterial != Materials.Empty && aMaterial != Materials._NULL) {
+ OrePrefixes aPrefix = mGeneratedPrefixList[aDamage / 1000];
+ if (aPrefix != null) return GT_Utility.copyAmount(1, aPrefix.mContainerItem);
+ }
+ }
+ return null;
}
-
- @Override
- public final IIconContainer getIconContainer(int aMetaData) {
- return GregTech_API.sGeneratedMaterials[aMetaData % 1000] == null ? null : getIconContainer(aMetaData, GregTech_API.sGeneratedMaterials[aMetaData % 1000]);
+
+ @Override
+ public final IIconContainer getIconContainer(int aMetaData) {
+ return GregTech_API.sGeneratedMaterials[aMetaData % 1000] == null ? null : getIconContainer(aMetaData, GregTech_API.sGeneratedMaterials[aMetaData % 1000]);
}
-
- @Override
+
+ @Override
@SideOnly(Side.CLIENT)
public final void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < 32000; i++) if (doesMaterialAllowGeneration(mGeneratedPrefixList[i / 1000], GregTech_API.sGeneratedMaterials[i % 1000]) && doesShowInCreative(mGeneratedPrefixList[i / 1000], GregTech_API.sGeneratedMaterials[i % 1000], GregTech_API.sDoShowAllItemsInCreative)) {
- ItemStack tStack = new ItemStack(this, 1, i);
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
+ for (int i = 0; i < 32000; i++)
+ if (doesMaterialAllowGeneration(mGeneratedPrefixList[i / 1000], GregTech_API.sGeneratedMaterials[i % 1000]) && doesShowInCreative(mGeneratedPrefixList[i / 1000], GregTech_API.sGeneratedMaterials[i % 1000], GregTech_API.sDoShowAllItemsInCreative)) {
+ ItemStack tStack = new ItemStack(this, 1, i);
+ isItemStackUsable(tStack);
+ aList.add(tStack);
+ }
super.getSubItems(var1, aCreativeTab, aList);
}
-
- @Override
+
+ @Override
public final IIcon getIconFromDamage(int aMetaData) {
- if (aMetaData < 0) return null;
- if (aMetaData < 32000) {
- Materials tMaterial = GregTech_API.sGeneratedMaterials[aMetaData % 1000];
- if (tMaterial == null) return null;
- IIconContainer tIcon = getIconContainer(aMetaData, tMaterial);
- if (tIcon != null) return tIcon.getIcon();
- return null;
- }
- return aMetaData-32000<mIconList.length?mIconList[aMetaData-32000][0]:null;
+ if (aMetaData < 0) return null;
+ if (aMetaData < 32000) {
+ Materials tMaterial = GregTech_API.sGeneratedMaterials[aMetaData % 1000];
+ if (tMaterial == null) return null;
+ IIconContainer tIcon = getIconContainer(aMetaData, tMaterial);
+ if (tIcon != null) return tIcon.getIcon();
+ return null;
+ }
+ return aMetaData - 32000 < mIconList.length ? mIconList[aMetaData - 32000][0] : null;
+ }
+
+ @Override
+ public int getItemStackLimit(ItemStack aStack) {
+ int tDamage = getDamage(aStack);
+ if (tDamage < 32000 && mGeneratedPrefixList[tDamage / 1000] != null)
+ return Math.min(super.getItemStackLimit(aStack), mGeneratedPrefixList[tDamage / 1000].mDefaultStackSize);
+ return super.getItemStackLimit(aStack);
}
-
- @Override
- public int getItemStackLimit(ItemStack aStack) {
- int tDamage = getDamage(aStack);
- if (tDamage < 32000 && mGeneratedPrefixList[tDamage / 1000] != null) return Math.min(super.getItemStackLimit(aStack), mGeneratedPrefixList[tDamage / 1000].mDefaultStackSize);
- return super.getItemStackLimit(aStack);
- }
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
index 3be9074ab8..37e1d3a997 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
@@ -1,7 +1,8 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.MOD_ID_FR;
-import static gregtech.api.enums.GT_Values.MOD_ID_RC;
+import cpw.mods.fml.common.Optional;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.arboriculture.IToolGrafter;
import gregtech.api.GregTech_API;
import gregtech.api.enchants.Enchantment_Radioactivity;
@@ -13,11 +14,6 @@ import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-import gregtech.common.tools.GT_Tool_Turbine;
-
-import java.util.*;
-import java.util.Map.Entry;
-
import mods.railcraft.api.core.items.IToolCrowbar;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -41,136 +37,196 @@ import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.event.world.BlockEvent;
-import cpw.mods.fml.common.Optional;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.Random;
+
+import static gregtech.api.enums.GT_Values.MOD_ID_FR;
+import static gregtech.api.enums.GT_Values.MOD_ID_RC;
/**
* This is an example on how you can create a Tool ItemStack, in this case a Bismuth Wrench:
* GT_MetaGenerated_Tool.sInstances.get("gt.metatool.01").getToolWithStats(16, 1, Materials.Bismuth, Materials.Bismuth, null);
*/
@Optional.InterfaceList(value = {@Optional.Interface(iface = "forestry.api.arboriculture.IToolGrafter", modid = MOD_ID_FR), @Optional.Interface(iface = "mods.railcraft.api.core.items.IToolCrowbar", modid = MOD_ID_RC)})
-public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements IDamagableItem, IToolGrafter , IToolCrowbar{
- /**
- * All instances of this Item Class are listed here.
- * This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
- *
- * You can also use the unlocalized Name gotten from getUnlocalizedName() as Key if you want to get a specific Item.
- */
- public static final HashMap<String, GT_MetaGenerated_Tool> sInstances = new HashMap<String, GT_MetaGenerated_Tool>();
-
+public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements IDamagableItem, IToolGrafter, IToolCrowbar {
+ /**
+ * All instances of this Item Class are listed here.
+ * This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
+ * <p/>
+ * You can also use the unlocalized Name gotten from getUnlocalizedName() as Key if you want to get a specific Item.
+ */
+ public static final HashMap<String, GT_MetaGenerated_Tool> sInstances = new HashMap<String, GT_MetaGenerated_Tool>();
+
/* ---------- CONSTRUCTOR AND MEMBER VARIABLES ---------- */
-
- public final HashMap<Short, IToolStats> mToolStats = new HashMap<Short, IToolStats>();
-
- /**
- * Creates the Item using these Parameters.
- * @param aUnlocalized The Unlocalized Name of this Item.
- */
- public GT_MetaGenerated_Tool(String aUnlocalized) {
- super(aUnlocalized);
- GT_ModHandler.registerBoxableItemToToolBox(this);
- setCreativeTab(GregTech_API.TAB_GREGTECH);
+
+ public final HashMap<Short, IToolStats> mToolStats = new HashMap<Short, IToolStats>();
+
+ /**
+ * Creates the Item using these Parameters.
+ *
+ * @param aUnlocalized The Unlocalized Name of this Item.
+ */
+ public GT_MetaGenerated_Tool(String aUnlocalized) {
+ super(aUnlocalized);
+ GT_ModHandler.registerBoxableItemToToolBox(this);
+ setCreativeTab(GregTech_API.TAB_GREGTECH);
setMaxStackSize(1);
sInstances.put(getUnlocalizedName(), this);
- }
+ }
/* ---------- FOR ADDING CUSTOM ITEMS INTO THE REMAINING 766 RANGE ---------- */
-
- /**
- * This adds a Custom Item to the ending Range.
- * @param aID The Id of the assigned Tool Class [0 - 32765] (only even Numbers allowed! Uneven ID's are empty electric Items)
- * @param aEnglish The Default Localized Name of the created Item
- * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip
- * @param aToolStats The Food Value of this Item. Can be null as well.
- * @param aOreDictNamesAndAspects The OreDict Names you want to give the Item. Also used to assign Thaumcraft Aspects.
- * @return An ItemStack containing the newly created Item, but without specific Stats.
- */
- public final ItemStack addTool(int aID, String aEnglish, String aToolTip, IToolStats aToolStats, Object... aOreDictNamesAndAspects) {
- if (aToolTip == null) aToolTip = "";
- if (aID >= 0 && aID < 32766 && aID % 2 == 0) {
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + aID + ".name" , aEnglish);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + aID + ".tooltip" , aToolTip);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + (aID+1) + ".name" , aEnglish + " (Empty)");
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + (aID+1) + ".tooltip" , "You need to recharge it");
- mToolStats.put((short) aID , aToolStats);
- mToolStats.put((short)(aID+1), aToolStats);
- aToolStats.onStatsAddedToTool(this, aID);
- ItemStack rStack = new ItemStack(this, 1, aID);
- List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
- for (Object tOreDictNameOrAspect : aOreDictNamesAndAspects) {
- if (tOreDictNameOrAspect instanceof TC_AspectStack)
- ((TC_AspectStack)tOreDictNameOrAspect).addToAspectList(tAspects);
- else
- GT_OreDictUnificator.registerOre(tOreDictNameOrAspect, rStack);
- }
- if (GregTech_API.sThaumcraftCompat != null) GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(rStack, tAspects, false);
- return rStack;
- }
- return null;
- }
-
- /**
- * This Function gets an ItemStack Version of this Tool
- * @param aToolID the ID of the Tool Class
- * @param aAmount Amount of Items (well normally you only need 1)
- * @param aPrimaryMaterial Primary Material of this Tool
- * @param aSecondaryMaterial Secondary (Rod/Handle) Material of this Tool
- * @param aElectricArray The Electric Stats of this Tool (or null if not electric)
- */
- public final ItemStack getToolWithStats(int aToolID, int aAmount, Materials aPrimaryMaterial, Materials aSecondaryMaterial, long[] aElectricArray) {
- ItemStack rStack = new ItemStack(this, aAmount, aToolID);
- IToolStats tToolStats = getToolStats(rStack);
- if (tToolStats != null) {
- NBTTagCompound tMainNBT = new NBTTagCompound(), tToolNBT = new NBTTagCompound();
- if (aPrimaryMaterial != null) {
- tToolNBT.setString("PrimaryMaterial", aPrimaryMaterial.toString());
- tToolNBT.setLong("MaxDamage", 100L*(long)(aPrimaryMaterial.mDurability * tToolStats.getMaxDurabilityMultiplier()));
- }
- if (aSecondaryMaterial != null) tToolNBT.setString("SecondaryMaterial", aSecondaryMaterial.toString());
-
- if (aElectricArray != null) {
- tToolNBT.setBoolean("Electric", true);
- tToolNBT.setLong("MaxCharge", aElectricArray[0]);
- tToolNBT.setLong("Voltage", aElectricArray[1]);
- tToolNBT.setLong("Tier", aElectricArray[2]);
- tToolNBT.setLong("SpecialData", aElectricArray[3]);
- }
-
- tMainNBT.setTag("GT.ToolStats", tToolNBT);
- rStack.setTagCompound(tMainNBT);
- }
- isItemStackUsable(rStack);
- return rStack;
- }
+
+ public static final Materials getPrimaryMaterial(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) return Materials.getRealMaterial(aNBT.getString("PrimaryMaterial"));
+ }
+ return Materials._NULL;
+ }
+
+ public static final Materials getSecondaryMaterial(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) return Materials.getRealMaterial(aNBT.getString("SecondaryMaterial"));
+ }
+ return Materials._NULL;
+ }
/* ---------- INTERNAL OVERRIDES ---------- */
-
- /**
- * Called by the Block Harvesting Event within the GT_Proxy
- */
- public void onHarvestBlockEvent(ArrayList<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX, int aY, int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent) {
- IToolStats tStats = getToolStats(aStack);
- if (isItemStackUsable(aStack) && getDigSpeed(aStack, aBlock, aMetaData) > 0.0F) doDamage(aStack, tStats.convertBlockDrops(aDrops, aStack, aPlayer, aBlock, aX, aY, aZ, aMetaData, aFortune, aSilkTouch, aEvent) * tStats.getToolDamagePerDropConversion());
- }
-
+
+ public static final long getToolMaxDamage(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) return aNBT.getLong("MaxDamage");
+ }
+ return 0;
+ }
+
+ public static final long getToolDamage(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) return aNBT.getLong("Damage");
+ }
+ return 0;
+ }
+
+ public static final boolean setToolDamage(ItemStack aStack, long aDamage) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null) {
+ aNBT.setLong("Damage", aDamage);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * This adds a Custom Item to the ending Range.
+ *
+ * @param aID The Id of the assigned Tool Class [0 - 32765] (only even Numbers allowed! Uneven ID's are empty electric Items)
+ * @param aEnglish The Default Localized Name of the created Item
+ * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip
+ * @param aToolStats The Food Value of this Item. Can be null as well.
+ * @param aOreDictNamesAndAspects The OreDict Names you want to give the Item. Also used to assign Thaumcraft Aspects.
+ * @return An ItemStack containing the newly created Item, but without specific Stats.
+ */
+ public final ItemStack addTool(int aID, String aEnglish, String aToolTip, IToolStats aToolStats, Object... aOreDictNamesAndAspects) {
+ if (aToolTip == null) aToolTip = "";
+ if (aID >= 0 && aID < 32766 && aID % 2 == 0) {
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + aID + ".name", aEnglish);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + aID + ".tooltip", aToolTip);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + (aID + 1) + ".name", aEnglish + " (Empty)");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + (aID + 1) + ".tooltip", "You need to recharge it");
+ mToolStats.put((short) aID, aToolStats);
+ mToolStats.put((short) (aID + 1), aToolStats);
+ aToolStats.onStatsAddedToTool(this, aID);
+ ItemStack rStack = new ItemStack(this, 1, aID);
+ List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
+ for (Object tOreDictNameOrAspect : aOreDictNamesAndAspects) {
+ if (tOreDictNameOrAspect instanceof TC_AspectStack)
+ ((TC_AspectStack) tOreDictNameOrAspect).addToAspectList(tAspects);
+ else
+ GT_OreDictUnificator.registerOre(tOreDictNameOrAspect, rStack);
+ }
+ if (GregTech_API.sThaumcraftCompat != null)
+ GregTech_API.sThaumcraftCompat.registerThaumcraftAspectsToItem(rStack, tAspects, false);
+ return rStack;
+ }
+ return null;
+ }
+
+ /**
+ * This Function gets an ItemStack Version of this Tool
+ *
+ * @param aToolID the ID of the Tool Class
+ * @param aAmount Amount of Items (well normally you only need 1)
+ * @param aPrimaryMaterial Primary Material of this Tool
+ * @param aSecondaryMaterial Secondary (Rod/Handle) Material of this Tool
+ * @param aElectricArray The Electric Stats of this Tool (or null if not electric)
+ */
+ public final ItemStack getToolWithStats(int aToolID, int aAmount, Materials aPrimaryMaterial, Materials aSecondaryMaterial, long[] aElectricArray) {
+ ItemStack rStack = new ItemStack(this, aAmount, aToolID);
+ IToolStats tToolStats = getToolStats(rStack);
+ if (tToolStats != null) {
+ NBTTagCompound tMainNBT = new NBTTagCompound(), tToolNBT = new NBTTagCompound();
+ if (aPrimaryMaterial != null) {
+ tToolNBT.setString("PrimaryMaterial", aPrimaryMaterial.toString());
+ tToolNBT.setLong("MaxDamage", 100L * (long) (aPrimaryMaterial.mDurability * tToolStats.getMaxDurabilityMultiplier()));
+ }
+ if (aSecondaryMaterial != null) tToolNBT.setString("SecondaryMaterial", aSecondaryMaterial.toString());
+
+ if (aElectricArray != null) {
+ tToolNBT.setBoolean("Electric", true);
+ tToolNBT.setLong("MaxCharge", aElectricArray[0]);
+ tToolNBT.setLong("Voltage", aElectricArray[1]);
+ tToolNBT.setLong("Tier", aElectricArray[2]);
+ tToolNBT.setLong("SpecialData", aElectricArray[3]);
+ }
+
+ tMainNBT.setTag("GT.ToolStats", tToolNBT);
+ rStack.setTagCompound(tMainNBT);
+ }
+ isItemStackUsable(rStack);
+ return rStack;
+ }
+
+ /**
+ * Called by the Block Harvesting Event within the GT_Proxy
+ */
+ public void onHarvestBlockEvent(ArrayList<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX, int aY, int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent) {
+ IToolStats tStats = getToolStats(aStack);
+ if (isItemStackUsable(aStack) && getDigSpeed(aStack, aBlock, aMetaData) > 0.0F)
+ doDamage(aStack, tStats.convertBlockDrops(aDrops, aStack, aPlayer, aBlock, aX, aY, aZ, aMetaData, aFortune, aSilkTouch, aEvent) * tStats.getToolDamagePerDropConversion());
+ }
+
@Override
public boolean onLeftClickEntity(ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null || !isItemStackUsable(aStack)) return true;
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null || !isItemStackUsable(aStack)) return true;
GT_Utility.doSoundAtClient(tStats.getEntityHitSound(), 1, 1.0F);
if (super.onLeftClickEntity(aStack, aPlayer, aEntity)) return true;
if (aEntity.canAttackWithItem() && !aEntity.hitByEntity(aPlayer)) {
- float tMagicDamage = tStats.getMagicDamageAgainstEntity(aEntity instanceof EntityLivingBase?EnchantmentHelper.getEnchantmentModifierLiving(aPlayer, (EntityLivingBase)aEntity):0.0F, aEntity, aStack, aPlayer), tDamage = tStats.getNormalDamageAgainstEntity((float)aPlayer.getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue() + getToolCombatDamage(aStack), aEntity, aStack, aPlayer);
+ float tMagicDamage = tStats.getMagicDamageAgainstEntity(aEntity instanceof EntityLivingBase ? EnchantmentHelper.getEnchantmentModifierLiving(aPlayer, (EntityLivingBase) aEntity) : 0.0F, aEntity, aStack, aPlayer), tDamage = tStats.getNormalDamageAgainstEntity((float) aPlayer.getEntityAttribute(SharedMonsterAttributes.attackDamage).getAttributeValue() + getToolCombatDamage(aStack), aEntity, aStack, aPlayer);
if (tDamage + tMagicDamage > 0.0F) {
boolean tCriticalHit = aPlayer.fallDistance > 0.0F && !aPlayer.onGround && !aPlayer.isOnLadder() && !aPlayer.isInWater() && !aPlayer.isPotionActive(Potion.blindness) && aPlayer.ridingEntity == null && aEntity instanceof EntityLivingBase;
if (tCriticalHit && tDamage > 0.0F) tDamage *= 1.5F;
tDamage += tMagicDamage;
if (aEntity.attackEntityFrom(tStats.getDamageSource(aPlayer, aEntity), tDamage)) {
- if (aEntity instanceof EntityLivingBase) aEntity.setFire(EnchantmentHelper.getFireAspectModifier(aPlayer) * 4);
- int tKnockcack = (aPlayer.isSprinting()?1:0) + (aEntity instanceof EntityLivingBase?EnchantmentHelper.getKnockbackModifier(aPlayer, (EntityLivingBase)aEntity):0);
+ if (aEntity instanceof EntityLivingBase)
+ aEntity.setFire(EnchantmentHelper.getFireAspectModifier(aPlayer) * 4);
+ int tKnockcack = (aPlayer.isSprinting() ? 1 : 0) + (aEntity instanceof EntityLivingBase ? EnchantmentHelper.getKnockbackModifier(aPlayer, (EntityLivingBase) aEntity) : 0);
if (tKnockcack > 0) {
- aEntity.addVelocity(-MathHelper.sin(aPlayer.rotationYaw * (float)Math.PI / 180.0F) * tKnockcack * 0.5F, 0.1D, MathHelper.cos(aPlayer.rotationYaw * (float)Math.PI / 180.0F) * tKnockcack * 0.5F);
+ aEntity.addVelocity(-MathHelper.sin(aPlayer.rotationYaw * (float) Math.PI / 180.0F) * tKnockcack * 0.5F, 0.1D, MathHelper.cos(aPlayer.rotationYaw * (float) Math.PI / 180.0F) * tKnockcack * 0.5F);
aPlayer.motionX *= 0.6D;
aPlayer.motionZ *= 0.6D;
aPlayer.setSprinting(false);
@@ -179,9 +235,11 @@ public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements
if (tMagicDamage > 0.0F) aPlayer.onEnchantmentCritical(aEntity);
if (tDamage >= 18.0F) aPlayer.triggerAchievement(AchievementList.overkill);
aPlayer.setLastAttacker(aEntity);
- if (aEntity instanceof EntityLivingBase) EnchantmentHelper.func_151384_a((EntityLivingBase)aEntity, aPlayer);
+ if (aEntity instanceof EntityLivingBase)
+ EnchantmentHelper.func_151384_a((EntityLivingBase) aEntity, aPlayer);
EnchantmentHelper.func_151385_b(aPlayer, aEntity);
- if (aEntity instanceof EntityLivingBase) aPlayer.addStat(StatList.damageDealtStat, Math.round(tDamage * 10.0F));
+ if (aEntity instanceof EntityLivingBase)
+ aPlayer.addStat(StatList.damageDealtStat, Math.round(tDamage * 10.0F));
aEntity.hurtResistantTime = Math.max(1, tStats.getHurtResistanceTime(aEntity.hurtResistantTime, aEntity));
aPlayer.addExhaustion(0.3F);
doDamage(aStack, tStats.getToolDamagePerEntityAttack());
@@ -191,372 +249,345 @@ public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements
if (aStack.stackSize <= 0) aPlayer.destroyCurrentEquippedItem();
return true;
}
-
+
@Override
- public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats != null && tStats.canBlock()) aPlayer.setItemInUse(aStack, 72000);
- return super.onItemRightClick(aStack, aWorld, aPlayer);
+ public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats != null && tStats.canBlock()) aPlayer.setItemInUse(aStack, 72000);
+ return super.onItemRightClick(aStack, aWorld, aPlayer);
}
-
+
@Override
public final int getMaxItemUseDuration(ItemStack aStack) {
return 72000;
}
-
+
@Override
- public final EnumAction getItemUseAction(ItemStack aStack) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats != null && tStats.canBlock()) return EnumAction.block;
+ public final EnumAction getItemUseAction(ItemStack aStack) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats != null && tStats.canBlock()) return EnumAction.block;
return EnumAction.none;
}
-
- @Override
+
+ @Override
@SideOnly(Side.CLIENT)
public final void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < 32766; i+=2) if (getToolStats(new ItemStack(this, 1, i)) != null) {
- ItemStack tStack = new ItemStack(this, 1, i);
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
+ for (int i = 0; i < 32766; i += 2)
+ if (getToolStats(new ItemStack(this, 1, i)) != null) {
+ ItemStack tStack = new ItemStack(this, 1, i);
+ isItemStackUsable(tStack);
+ aList.add(tStack);
+ }
}
-
- @Override
+
+ @Override
@SideOnly(Side.CLIENT)
public final void registerIcons(IIconRegister aIconRegister) {
- //
+ //
}
-
- @Override
+
+ @Override
public final IIcon getIconFromDamage(int aMetaData) {
- return null;
+ return null;
}
-
- @Override
+
+ @Override
public void addAdditionalToolTips(List aList, ItemStack aStack) {
- long tMaxDamage = getToolMaxDamage(aStack);
- Materials tMaterial = getPrimaryMaterial(aStack);
- IToolStats tStats = getToolStats(aStack);
- int tOffset = getElectricStats(aStack) != null ? 2 : 1;
- if (tStats != null) {
- String name = aStack.getUnlocalizedName();
- if(name.equals("gt.metatool.01.170")||name.equals("gt.metatool.01.172")||name.equals("gt.metatool.01.174")||name.equals("gt.metatool.01.176")){
- 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, EnumChatFormatting.WHITE + "Turbine Efficency: " + EnumChatFormatting.BLUE + (50.0F+(10.0F*getToolCombatDamage(aStack))) + EnumChatFormatting.GRAY);
- aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Steam flow: " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed*1000) + EnumChatFormatting.GRAY+ "L/sec");
- aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Gas flow(EU burnvalue per tick): " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed*25) + EnumChatFormatting.GRAY+ "EU/t");
- aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Plasma flow(Plasma energyvalue per tick): " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed*1000) + EnumChatFormatting.GRAY+ "EU/t");
-
- }else{
- 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, EnumChatFormatting.WHITE + "Attack Damage: " + EnumChatFormatting.BLUE + getToolCombatDamage(aStack) + EnumChatFormatting.GRAY);
- aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Mining Speed: " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed) + EnumChatFormatting.GRAY);
- }}
- }
-
- public static final Materials getPrimaryMaterial(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return Materials.getRealMaterial(aNBT.getString("PrimaryMaterial"));
- }
- return Materials._NULL;
- }
-
- public static final Materials getSecondaryMaterial(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return Materials.getRealMaterial(aNBT.getString("SecondaryMaterial"));
- }
- return Materials._NULL;
- }
-
- @Override
- public Long[] getFluidContainerStats(ItemStack aStack) {
- return null;
- }
-
- @Override
- public Long[] getElectricStats(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null && aNBT.getBoolean("Electric")) return new Long[] {aNBT.getLong("MaxCharge"), aNBT.getLong("Voltage"), aNBT.getLong("Tier"), aNBT.getLong("SpecialData")};
- }
- return null;
- }
-
- public float getToolCombatDamage(ItemStack aStack) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null) return 0;
- return tStats.getBaseDamage() + getPrimaryMaterial(aStack).mToolQuality;
- }
-
- public static final long getToolMaxDamage(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return aNBT.getLong("MaxDamage");
- }
- return 0;
- }
-
- public static final long getToolDamage(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) return aNBT.getLong("Damage");
- }
- return 0;
- }
-
- public static final boolean setToolDamage(ItemStack aStack, long aDamage) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) {
- aNBT = aNBT.getCompoundTag("GT.ToolStats");
- if (aNBT != null) {
- aNBT.setLong("Damage", aDamage);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public final boolean doDamageToItem(ItemStack aStack, int aVanillaDamage) {
- return doDamage(aStack, aVanillaDamage * 100);
- }
-
- public final boolean doDamage(ItemStack aStack, long aAmount) {
- if (!isItemStackUsable(aStack)) return false;
- Long[] tElectric = getElectricStats(aStack);
- if (tElectric == null) {
- long tNewDamage = getToolDamage(aStack) + aAmount;
- setToolDamage(aStack, tNewDamage);
- if (tNewDamage >= getToolMaxDamage(aStack)) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null || GT_Utility.setStack(aStack, tStats.getBrokenItem(aStack)) == null) {
- if (tStats != null) GT_Utility.doSoundAtClient(tStats.getBreakingSound(), 1, 1.0F);
- if (aStack.stackSize > 0) aStack.stackSize--;
-
- }
- }
- return true;
- }
- if (use(aStack, (int)aAmount, null)) {
- if (new Random().nextInt(25) == 0) {
- long tNewDamage = getToolDamage(aStack) + aAmount;
- setToolDamage(aStack, tNewDamage);
- if (tNewDamage >= getToolMaxDamage(aStack)) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null || GT_Utility.setStack(aStack, tStats.getBrokenItem(aStack)) == null) {
- if (tStats != null) GT_Utility.doSoundAtClient(tStats.getBreakingSound(), 1, 1.0F);
- if (aStack.stackSize > 0) aStack.stackSize--;
- }
- }
- }
- return true;
- }
- return false;
- }
-
+ long tMaxDamage = getToolMaxDamage(aStack);
+ Materials tMaterial = getPrimaryMaterial(aStack);
+ IToolStats tStats = getToolStats(aStack);
+ int tOffset = getElectricStats(aStack) != null ? 2 : 1;
+ if (tStats != null) {
+ String name = aStack.getUnlocalizedName();
+ if (name.equals("gt.metatool.01.170") || name.equals("gt.metatool.01.172") || name.equals("gt.metatool.01.174") || name.equals("gt.metatool.01.176")) {
+ 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, EnumChatFormatting.WHITE + "Turbine Efficency: " + EnumChatFormatting.BLUE + (50.0F + (10.0F * getToolCombatDamage(aStack))) + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Steam flow: " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed * 1000) + EnumChatFormatting.GRAY + "L/sec");
+ aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Gas flow(EU burnvalue per tick): " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed * 25) + EnumChatFormatting.GRAY + "EU/t");
+ aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Optimal Plasma flow(Plasma energyvalue per tick): " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed * 1000) + EnumChatFormatting.GRAY + "EU/t");
+
+ } else {
+ 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, EnumChatFormatting.WHITE + "Attack Damage: " + EnumChatFormatting.BLUE + getToolCombatDamage(aStack) + EnumChatFormatting.GRAY);
+ aList.add(tOffset + 3, EnumChatFormatting.WHITE + "Mining Speed: " + EnumChatFormatting.LIGHT_PURPLE + Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed) + EnumChatFormatting.GRAY);
+ }
+ }
+ }
+
+ @Override
+ public Long[] getFluidContainerStats(ItemStack aStack) {
+ return null;
+ }
+
+ @Override
+ public Long[] getElectricStats(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) {
+ aNBT = aNBT.getCompoundTag("GT.ToolStats");
+ if (aNBT != null && aNBT.getBoolean("Electric"))
+ return new Long[]{aNBT.getLong("MaxCharge"), aNBT.getLong("Voltage"), aNBT.getLong("Tier"), aNBT.getLong("SpecialData")};
+ }
+ return null;
+ }
+
+ public float getToolCombatDamage(ItemStack aStack) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null) return 0;
+ return tStats.getBaseDamage() + getPrimaryMaterial(aStack).mToolQuality;
+ }
+
+ @Override
+ public final boolean doDamageToItem(ItemStack aStack, int aVanillaDamage) {
+ return doDamage(aStack, aVanillaDamage * 100);
+ }
+
+ public final boolean doDamage(ItemStack aStack, long aAmount) {
+ if (!isItemStackUsable(aStack)) return false;
+ Long[] tElectric = getElectricStats(aStack);
+ if (tElectric == null) {
+ long tNewDamage = getToolDamage(aStack) + aAmount;
+ setToolDamage(aStack, tNewDamage);
+ if (tNewDamage >= getToolMaxDamage(aStack)) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null || GT_Utility.setStack(aStack, tStats.getBrokenItem(aStack)) == null) {
+ if (tStats != null) GT_Utility.doSoundAtClient(tStats.getBreakingSound(), 1, 1.0F);
+ if (aStack.stackSize > 0) aStack.stackSize--;
+
+ }
+ }
+ return true;
+ }
+ if (use(aStack, (int) aAmount, null)) {
+ if (new Random().nextInt(25) == 0) {
+ long tNewDamage = getToolDamage(aStack) + aAmount;
+ setToolDamage(aStack, tNewDamage);
+ if (tNewDamage >= getToolMaxDamage(aStack)) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null || GT_Utility.setStack(aStack, tStats.getBrokenItem(aStack)) == null) {
+ if (tStats != null) GT_Utility.doSoundAtClient(tStats.getBreakingSound(), 1, 1.0F);
+ if (aStack.stackSize > 0) aStack.stackSize--;
+ }
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
@Override
public float getDigSpeed(ItemStack aStack, Block aBlock, int aMetaData) {
- if (!isItemStackUsable(aStack)) return 0.0F;
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null || Math.max(0, getHarvestLevel(aStack, "")) < aBlock.getHarvestLevel(aMetaData)) return 0.0F;
- return tStats.isMinableBlock(aBlock, (byte)aMetaData)?Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed):0.0F;
+ if (!isItemStackUsable(aStack)) return 0.0F;
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null || Math.max(0, getHarvestLevel(aStack, "")) < aBlock.getHarvestLevel(aMetaData)) return 0.0F;
+ return tStats.isMinableBlock(aBlock, (byte) aMetaData) ? Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed) : 0.0F;
}
-
- @Override
+
+ @Override
public final boolean canHarvestBlock(Block aBlock, ItemStack aStack) {
- return getDigSpeed(aStack, aBlock, (byte)0) > 0.0F;
- }
-
- @Override
+ return getDigSpeed(aStack, aBlock, (byte) 0) > 0.0F;
+ }
+
+ @Override
public final int getHarvestLevel(ItemStack aStack, String aToolClass) {
- IToolStats tStats = getToolStats(aStack);
- return tStats == null ? -1 : tStats.getBaseQuality() + getPrimaryMaterial(aStack).mToolQuality;
+ IToolStats tStats = getToolStats(aStack);
+ return tStats == null ? -1 : tStats.getBaseQuality() + getPrimaryMaterial(aStack).mToolQuality;
}
-
- @Override
+
+ @Override
public boolean onBlockDestroyed(ItemStack aStack, World aWorld, Block aBlock, int aX, int aY, int aZ, EntityLivingBase aPlayer) {
- if (!isItemStackUsable(aStack)) return false;
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null) return false;
+ if (!isItemStackUsable(aStack)) return false;
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null) return false;
GT_Utility.doSoundAtClient(tStats.getMiningSound(), 1, 1.0F);
- doDamage(aStack, (int)Math.max(1, aBlock.getBlockHardness(aWorld, aX, aY, aZ) * tStats.getToolDamagePerBlockBreak()));
+ doDamage(aStack, (int) Math.max(1, aBlock.getBlockHardness(aWorld, aX, aY, aZ) * tStats.getToolDamagePerBlockBreak()));
return getDigSpeed(aStack, aBlock, aWorld.getBlockMetadata(aX, aY, aZ)) > 0.0F;
}
-
- @Override
- public final ItemStack getContainerItem(ItemStack aStack) {
- return getContainerItem(aStack, true);
- }
-
- @Override
- public final boolean hasContainerItem(ItemStack aStack) {
- return getContainerItem(aStack, false) != null;
- }
-
- private ItemStack getContainerItem(ItemStack aStack, boolean playSound) {
- if (!isItemStackUsable(aStack)) return null;
- aStack = GT_Utility.copyAmount(1, aStack);
- IToolStats tStats = getToolStats(aStack);
- if (tStats == null) return null;
- doDamage(aStack, tStats.getToolDamagePerContainerCraft());
- aStack = aStack.stackSize > 0 ? aStack : null;
- if (playSound) {
- String sound = (aStack == null) ? tStats.getBreakingSound() : tStats.getCraftingSound();
- GT_Utility.doSoundAtClient(sound, 1, 1.0F);
- }
- return aStack;
+
+ @Override
+ public final ItemStack getContainerItem(ItemStack aStack) {
+ return getContainerItem(aStack, true);
}
-
- public IToolStats getToolStats(ItemStack aStack) {
- isItemStackUsable(aStack);
- return getToolStatsInternal(aStack);
- }
-
- private IToolStats getToolStatsInternal(ItemStack aStack) {
- return aStack == null ? null : mToolStats.get((short)aStack.getItemDamage());
- }
-
- @Override
- public float getSaplingModifier(ItemStack aStack, World aWorld, EntityPlayer aPlayer, int aX, int aY, int aZ) {
- IToolStats tStats = getToolStats(aStack);
- return tStats != null && tStats.isGrafter() ? Math.min(100.0F, (1+getHarvestLevel(aStack, "")) * 20.0F) : 0.0F;
- }
-
- @Override
- public boolean canWhack(EntityPlayer aPlayer, ItemStack aStack, int aX, int aY, int aZ) {
- if (!isItemStackUsable(aStack)) return false;
- IToolStats tStats = getToolStats(aStack);
- return tStats != null && tStats.isCrowbar();
- }
-
- @Override
- public void onWhack(EntityPlayer aPlayer, ItemStack aStack, int aX, int aY, int aZ) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
- }
-
- @Override
- public boolean canLink(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
- if (!isItemStackUsable(aStack)) return false;
- IToolStats tStats = getToolStats(aStack);
- return tStats != null && tStats.isCrowbar();
- }
-
- @Override
- public void onLink(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
- }
-
- @Override
- public boolean canBoost(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
- if (!isItemStackUsable(aStack)) return false;
- IToolStats tStats = getToolStats(aStack);
- return tStats != null && tStats.isCrowbar();
- }
-
- @Override
- public void onBoost(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
- }
-
- @Override
+
+ @Override
+ public final boolean hasContainerItem(ItemStack aStack) {
+ return getContainerItem(aStack, false) != null;
+ }
+
+ private ItemStack getContainerItem(ItemStack aStack, boolean playSound) {
+ if (!isItemStackUsable(aStack)) return null;
+ aStack = GT_Utility.copyAmount(1, aStack);
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats == null) return null;
+ doDamage(aStack, tStats.getToolDamagePerContainerCraft());
+ aStack = aStack.stackSize > 0 ? aStack : null;
+ if (playSound) {
+ String sound = (aStack == null) ? tStats.getBreakingSound() : tStats.getCraftingSound();
+ GT_Utility.doSoundAtClient(sound, 1, 1.0F);
+ }
+ return aStack;
+ }
+
+ public IToolStats getToolStats(ItemStack aStack) {
+ isItemStackUsable(aStack);
+ return getToolStatsInternal(aStack);
+ }
+
+ private IToolStats getToolStatsInternal(ItemStack aStack) {
+ return aStack == null ? null : mToolStats.get((short) aStack.getItemDamage());
+ }
+
+ @Override
+ public float getSaplingModifier(ItemStack aStack, World aWorld, EntityPlayer aPlayer, int aX, int aY, int aZ) {
+ IToolStats tStats = getToolStats(aStack);
+ return tStats != null && tStats.isGrafter() ? Math.min(100.0F, (1 + getHarvestLevel(aStack, "")) * 20.0F) : 0.0F;
+ }
+
+ @Override
+ public boolean canWhack(EntityPlayer aPlayer, ItemStack aStack, int aX, int aY, int aZ) {
+ if (!isItemStackUsable(aStack)) return false;
+ IToolStats tStats = getToolStats(aStack);
+ return tStats != null && tStats.isCrowbar();
+ }
+
+ @Override
+ public void onWhack(EntityPlayer aPlayer, ItemStack aStack, int aX, int aY, int aZ) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
+ }
+
+ @Override
+ public boolean canLink(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
+ if (!isItemStackUsable(aStack)) return false;
+ IToolStats tStats = getToolStats(aStack);
+ return tStats != null && tStats.isCrowbar();
+ }
+
+ @Override
+ public void onLink(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
+ }
+
+ @Override
+ public boolean canBoost(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
+ if (!isItemStackUsable(aStack)) return false;
+ IToolStats tStats = getToolStats(aStack);
+ return tStats != null && tStats.isCrowbar();
+ }
+
+ @Override
+ public void onBoost(EntityPlayer aPlayer, ItemStack aStack, EntityMinecart cart) {
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats != null) doDamage(aStack, tStats.getToolDamagePerEntityAttack());
+ }
+
+ @Override
public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- IToolStats tStats = getToolStats(aStack);
- if (tStats != null && aPlayer != null) tStats.onToolCrafted(aStack, aPlayer);
- super.onCreated(aStack, aWorld, aPlayer);
- }
-
- @Override
+ IToolStats tStats = getToolStats(aStack);
+ if (tStats != null && aPlayer != null) tStats.onToolCrafted(aStack, aPlayer);
+ super.onCreated(aStack, aWorld, aPlayer);
+ }
+
+ @Override
public final boolean doesContainerItemLeaveCraftingGrid(ItemStack aStack) {
return false;
}
-
- @Override
- public final int getItemStackLimit(ItemStack aStack) {
- return 1;
- }
-
- @Override
+
+ @Override
+ public final int getItemStackLimit(ItemStack aStack) {
+ return 1;
+ }
+
+ @Override
public boolean isFull3D() {
return true;
}
-
- @Override
- public boolean isItemStackUsable(ItemStack aStack) {
- IToolStats tStats = getToolStatsInternal(aStack);
- if (aStack.getItemDamage() % 2 == 1 || tStats == null) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) aNBT.removeTag("ench");
- return false;
- }
- Materials aMaterial = getPrimaryMaterial(aStack);
- HashMap<Integer, Integer> tMap = new HashMap<Integer, Integer>(), tResult = new HashMap<Integer, Integer>();
- if (aMaterial.mEnchantmentTools != null) {
- tMap.put(aMaterial.mEnchantmentTools.effectId, (int)aMaterial.mEnchantmentToolsLevel);
- if (aMaterial.mEnchantmentTools == Enchantment.fortune)
- tMap.put(Enchantment.looting.effectId, (int)aMaterial.mEnchantmentToolsLevel);
- if (aMaterial.mEnchantmentTools == Enchantment.knockback)
- tMap.put(Enchantment.power.effectId, (int)aMaterial.mEnchantmentToolsLevel);
- if (aMaterial.mEnchantmentTools == Enchantment.fireAspect)
- tMap.put(Enchantment.flame.effectId, (int)aMaterial.mEnchantmentToolsLevel);
- }
- Enchantment[] tEnchants = tStats.getEnchantments(aStack);
- int[] tLevels = tStats.getEnchantmentLevels(aStack);
- for (int i = 0; i < tEnchants.length; i++) if (tLevels[i] > 0) {
- Integer tLevel = tMap.get(tEnchants[i].effectId);
- tMap.put(tEnchants[i].effectId, tLevel == null ? tLevels[i] : tLevel == tLevels[i] ? tLevel+1 : Math.max(tLevel, tLevels[i]));
- }
- for (Entry<Integer, Integer> tEntry : tMap.entrySet()) {
- if (tEntry.getKey() == 33 || (tEntry.getKey() == 20 && tEntry.getValue() > 2) || tEntry.getKey() == Enchantment_Radioactivity.INSTANCE.effectId) tResult.put(tEntry.getKey(), tEntry.getValue()); else
- switch(Enchantment.enchantmentsList[tEntry.getKey()].type) {
- case weapon:
- if (tStats.isWeapon()) tResult.put(tEntry.getKey(), tEntry.getValue());
- break;
- case all:
- tResult.put(tEntry.getKey(), tEntry.getValue());
- break;
- case armor: case armor_feet: case armor_head: case armor_legs: case armor_torso:
- break;
- case bow:
- if (tStats.isRangedWeapon()) tResult.put(tEntry.getKey(), tEntry.getValue());
- break;
- case breakable:
- break;
- case fishing_rod:
- break;
- case digger:
- if (tStats.isMiningTool()) tResult.put(tEntry.getKey(), tEntry.getValue());
- break;
- }
- }
- EnchantmentHelper.setEnchantments(tResult, aStack);
- return true;
- }
-
- @Override
- public short getChargedMetaData(ItemStack aStack) {
- return (short)(aStack.getItemDamage() - (aStack.getItemDamage() % 2));
- }
-
- @Override
- public short getEmptyMetaData(ItemStack aStack) {
- NBTTagCompound aNBT = aStack.getTagCompound();
- if (aNBT != null) aNBT.removeTag("ench");
- return (short)(aStack.getItemDamage()+1-(aStack.getItemDamage() % 2));
- }
-
- @Override public int getItemEnchantability() {return 0;}
- @Override public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {return false;}
- @Override public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {return false;}
+
+ @Override
+ public boolean isItemStackUsable(ItemStack aStack) {
+ IToolStats tStats = getToolStatsInternal(aStack);
+ if (aStack.getItemDamage() % 2 == 1 || tStats == null) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) aNBT.removeTag("ench");
+ return false;
+ }
+ Materials aMaterial = getPrimaryMaterial(aStack);
+ HashMap<Integer, Integer> tMap = new HashMap<Integer, Integer>(), tResult = new HashMap<Integer, Integer>();
+ if (aMaterial.mEnchantmentTools != null) {
+ tMap.put(aMaterial.mEnchantmentTools.effectId, (int) aMaterial.mEnchantmentToolsLevel);
+ if (aMaterial.mEnchantmentTools == Enchantment.fortune)
+ tMap.put(Enchantment.looting.effectId, (int) aMaterial.mEnchantmentToolsLevel);
+ if (aMaterial.mEnchantmentTools == Enchantment.knockback)
+ tMap.put(Enchantment.power.effectId, (int) aMaterial.mEnchantmentToolsLevel);
+ if (aMaterial.mEnchantmentTools == Enchantment.fireAspect)
+ tMap.put(Enchantment.flame.effectId, (int) aMaterial.mEnchantmentToolsLevel);
+ }
+ Enchantment[] tEnchants = tStats.getEnchantments(aStack);
+ int[] tLevels = tStats.getEnchantmentLevels(aStack);
+ for (int i = 0; i < tEnchants.length; i++)
+ if (tLevels[i] > 0) {
+ Integer tLevel = tMap.get(tEnchants[i].effectId);
+ tMap.put(tEnchants[i].effectId, tLevel == null ? tLevels[i] : tLevel == tLevels[i] ? tLevel + 1 : Math.max(tLevel, tLevels[i]));
+ }
+ for (Entry<Integer, Integer> tEntry : tMap.entrySet()) {
+ if (tEntry.getKey() == 33 || (tEntry.getKey() == 20 && tEntry.getValue() > 2) || tEntry.getKey() == Enchantment_Radioactivity.INSTANCE.effectId)
+ tResult.put(tEntry.getKey(), tEntry.getValue());
+ else
+ switch (Enchantment.enchantmentsList[tEntry.getKey()].type) {
+ case weapon:
+ if (tStats.isWeapon()) tResult.put(tEntry.getKey(), tEntry.getValue());
+ break;
+ case all:
+ tResult.put(tEntry.getKey(), tEntry.getValue());
+ break;
+ case armor:
+ case armor_feet:
+ case armor_head:
+ case armor_legs:
+ case armor_torso:
+ break;
+ case bow:
+ if (tStats.isRangedWeapon()) tResult.put(tEntry.getKey(), tEntry.getValue());
+ break;
+ case breakable:
+ break;
+ case fishing_rod:
+ break;
+ case digger:
+ if (tStats.isMiningTool()) tResult.put(tEntry.getKey(), tEntry.getValue());
+ break;
+ }
+ }
+ EnchantmentHelper.setEnchantments(tResult, aStack);
+ return true;
+ }
+
+ @Override
+ public short getChargedMetaData(ItemStack aStack) {
+ return (short) (aStack.getItemDamage() - (aStack.getItemDamage() % 2));
+ }
+
+ @Override
+ public short getEmptyMetaData(ItemStack aStack) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ if (aNBT != null) aNBT.removeTag("ench");
+ return (short) (aStack.getItemDamage() + 1 - (aStack.getItemDamage() % 2));
+ }
+
+ @Override
+ public int getItemEnchantability() {
+ return 0;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack aStack, ItemStack aBook) {
+ return false;
+ }
+
+ @Override
+ public boolean getIsRepairable(ItemStack aStack, ItemStack aMaterial) {
+ return false;
+ }
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java b/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
index 2d9d8e0c4f..9be65b1586 100644
--- a/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
+++ b/src/main/java/gregtech/api/items/GT_RadioactiveCellIC_Item.java
@@ -1,176 +1,149 @@
package gregtech.api.items;
- import gregtech.api.enums.ItemList;
+import gregtech.api.enums.ItemList;
import ic2.api.reactor.IReactor;
import ic2.api.reactor.IReactorComponent;
import ic2.core.IC2Potion;
-import ic2.core.Ic2Items;
-import ic2.core.init.InternalName;
-import ic2.core.item.ItemGradualInt;
import ic2.core.item.armor.ItemArmorHazmat;
-
-import java.util.ArrayList;
-
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import java.util.ArrayList;
- public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implements IReactorComponent
- {
+
+public class GT_RadioactiveCellIC_Item extends GT_RadioactiveCell_Item implements IReactorComponent {
public final int numberOfCells;
public final float sEnergy;
public final int sRadiation;
public final float sHeat;
-
- public GT_RadioactiveCellIC_Item( String aUnlocalized, String aEnglish, int aCellcount, int maxDamage, float aEnergy, int aRadiation, float aHeat)
- {
- super(aUnlocalized, aEnglish, aCellcount);
- setMaxStackSize(64);
- this.maxDmg=maxDamage;
- this.numberOfCells = aCellcount;
- this.sEnergy = aEnergy;
- this.sRadiation = aRadiation;
- this.sHeat = aHeat;
-
- }
-
-
- private class ItemStackCoord
- {
- public ItemStack stack;
- public int x;
- public int y;
-
- public ItemStackCoord(ItemStack stack1, int x1, int y1)
- {
- this.stack = stack1;
- this.x = x1;
- this.y = y1;
- }
+
+ public GT_RadioactiveCellIC_Item(String aUnlocalized, String aEnglish, int aCellcount, int maxDamage, float aEnergy, int aRadiation, float aHeat) {
+ super(aUnlocalized, aEnglish, aCellcount);
+ setMaxStackSize(64);
+ this.maxDmg = maxDamage;
+ this.numberOfCells = aCellcount;
+ this.sEnergy = aEnergy;
+ this.sRadiation = aRadiation;
+ this.sHeat = aHeat;
+
}
-
- public void processChamber(IReactor reactor, ItemStack yourStack, int x, int y, boolean heatrun)
- {
- if (!reactor.produceEnergy()) {
- return;
- }
- for (int iteration = 0; iteration < this.numberOfCells; iteration++)
- {
- int pulses = 1 + this.numberOfCells / 2;
- if (!heatrun)
- {
- for (int i = 0; i < pulses; i++) {
- acceptUraniumPulse(reactor, yourStack, yourStack, x, y, x, y, heatrun);
- }
- pulses += checkPulseable(reactor, x - 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x + 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y - 1, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y + 1, yourStack, x, y, heatrun);
+
+ private static int checkPulseable(IReactor reactor, int x, int y, ItemStack me, int mex, int mey, boolean heatrun) {
+ ItemStack other = reactor.getItemAt(x, y);
+ if ((other != null) && ((other.getItem() instanceof IReactorComponent)) &&
+ (((IReactorComponent) other.getItem()).acceptUraniumPulse(reactor, other, me, x, y, mex, mey, heatrun))) {
+ return 1;
+ }
+ return 0;
+ }
+
+ public void processChamber(IReactor reactor, ItemStack yourStack, int x, int y, boolean heatrun) {
+ if (!reactor.produceEnergy()) {
+ return;
}
- else
- {
- pulses += checkPulseable(reactor, x - 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x + 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y - 1, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y + 1, yourStack, x, y, heatrun);
-
- int heat = sumUp(pulses) * 4;
-
- ArrayList<ItemStackCoord> heatAcceptors = new ArrayList();
- checkHeatAcceptor(reactor, x - 1, y, heatAcceptors);
- checkHeatAcceptor(reactor, x + 1, y, heatAcceptors);
- checkHeatAcceptor(reactor, x, y - 1, heatAcceptors);
- checkHeatAcceptor(reactor, x, y + 1, heatAcceptors);
- heat = Math.round(heat * sHeat);
- while ((heatAcceptors.size() > 0) && (heat > 0))
- {
-
- int dheat = heat / heatAcceptors.size();
- heat -= dheat;
- dheat = ((IReactorComponent)((ItemStackCoord)heatAcceptors.get(0)).stack.getItem()).alterHeat(reactor, ((ItemStackCoord)heatAcceptors.get(0)).stack, ((ItemStackCoord)heatAcceptors.get(0)).x, ((ItemStackCoord)heatAcceptors.get(0)).y, dheat);
- heat += dheat;
- heatAcceptors.remove(0);
- }
- if (heat > 0) {
- reactor.addHeat(heat);
- }
+ for (int iteration = 0; iteration < this.numberOfCells; iteration++) {
+ int pulses = 1 + this.numberOfCells / 2;
+ if (!heatrun) {
+ for (int i = 0; i < pulses; i++) {
+ acceptUraniumPulse(reactor, yourStack, yourStack, x, y, x, y, heatrun);
+ }
+ pulses += checkPulseable(reactor, x - 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x + 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y - 1, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y + 1, yourStack, x, y, heatrun);
+ } else {
+ pulses += checkPulseable(reactor, x - 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x + 1, y, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y - 1, yourStack, x, y, heatrun) + checkPulseable(reactor, x, y + 1, yourStack, x, y, heatrun);
+
+ int heat = sumUp(pulses) * 4;
+
+ ArrayList<ItemStackCoord> heatAcceptors = new ArrayList();
+ checkHeatAcceptor(reactor, x - 1, y, heatAcceptors);
+ checkHeatAcceptor(reactor, x + 1, y, heatAcceptors);
+ checkHeatAcceptor(reactor, x, y - 1, heatAcceptors);
+ checkHeatAcceptor(reactor, x, y + 1, heatAcceptors);
+ heat = Math.round(heat * sHeat);
+ while ((heatAcceptors.size() > 0) && (heat > 0)) {
+
+ int dheat = heat / heatAcceptors.size();
+ heat -= dheat;
+ dheat = ((IReactorComponent) ((ItemStackCoord) heatAcceptors.get(0)).stack.getItem()).alterHeat(reactor, ((ItemStackCoord) heatAcceptors.get(0)).stack, ((ItemStackCoord) heatAcceptors.get(0)).x, ((ItemStackCoord) heatAcceptors.get(0)).y, dheat);
+ heat += dheat;
+ heatAcceptors.remove(0);
+ }
+ if (heat > 0) {
+ reactor.addHeat(heat);
+ }
+ }
}
- }
- if (getDamageOfStack(yourStack) >= getMaxDamageEx() - 1) {
- switch (this.numberOfCells)
- {
- case 1:
- reactor.setItemAt(x, y, ItemList.Depleted_Thorium_1.get(1, new Object[0]));
- break;
- case 2:
- reactor.setItemAt(x, y, ItemList.Depleted_Thorium_2.get(1, new Object[0]));
- break;
- case 4:
- reactor.setItemAt(x, y, ItemList.Depleted_Thorium_4.get(1, new Object[0]));
+ if (getDamageOfStack(yourStack) >= getMaxDamageEx() - 1) {
+ switch (this.numberOfCells) {
+ case 1:
+ reactor.setItemAt(x, y, ItemList.Depleted_Thorium_1.get(1, new Object[0]));
+ break;
+ case 2:
+ reactor.setItemAt(x, y, ItemList.Depleted_Thorium_2.get(1, new Object[0]));
+ break;
+ case 4:
+ reactor.setItemAt(x, y, ItemList.Depleted_Thorium_4.get(1, new Object[0]));
+ }
+ } else if (heatrun) {
+ damageItemStack(yourStack, 1);
}
- } else if (heatrun) {
- damageItemStack(yourStack, 1);
- }
}
-
-
- private static int checkPulseable(IReactor reactor, int x, int y, ItemStack me, int mex, int mey, boolean heatrun)
- {
- ItemStack other = reactor.getItemAt(x, y);
- if ((other != null) && ((other.getItem() instanceof IReactorComponent)) &&
- (((IReactorComponent)other.getItem()).acceptUraniumPulse(reactor, other, me, x, y, mex, mey, heatrun))) {
- return 1;
- }
- return 0;
+
+ private void checkHeatAcceptor(IReactor reactor, int x, int y, ArrayList<ItemStackCoord> heatAcceptors) {
+ ItemStack thing = reactor.getItemAt(x, y);
+ if ((thing != null) && ((thing.getItem() instanceof IReactorComponent)) &&
+ (((IReactorComponent) thing.getItem()).canStoreHeat(reactor, thing, x, y))) {
+ heatAcceptors.add(new ItemStackCoord(thing, x, y));
+ }
}
-
- private void checkHeatAcceptor(IReactor reactor, int x, int y, ArrayList<ItemStackCoord> heatAcceptors)
- {
- ItemStack thing = reactor.getItemAt(x, y);
- if ((thing != null) && ((thing.getItem() instanceof IReactorComponent)) &&
- (((IReactorComponent)thing.getItem()).canStoreHeat(reactor, thing, x, y))) {
- heatAcceptors.add(new ItemStackCoord(thing, x, y));
- }
+
+ public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY, boolean heatrun) {
+ if (!heatrun) {
+ reactor.addOutput((float) (1.0F * this.sEnergy));
+ }
+ return true;
}
-
- public boolean acceptUraniumPulse(IReactor reactor, ItemStack yourStack, ItemStack pulsingStack, int youX, int youY, int pulseX, int pulseY, boolean heatrun)
- {
- if (!heatrun) {
- reactor.addOutput((float) (1.0F*this.sEnergy));
- }
- return true;
+
+ public boolean canStoreHeat(IReactor reactor, ItemStack yourStack, int x, int y) {
+ return false;
}
-
- public boolean canStoreHeat(IReactor reactor, ItemStack yourStack, int x, int y)
- {
- return false;
+
+ public int getMaxHeat(IReactor reactor, ItemStack yourStack, int x, int y) {
+ return 0;
}
-
- public int getMaxHeat(IReactor reactor, ItemStack yourStack, int x, int y)
- {
- return 0;
+
+ public int getCurrentHeat(IReactor reactor, ItemStack yourStack, int x, int y) {
+ return 0;
}
-
- public int getCurrentHeat(IReactor reactor, ItemStack yourStack, int x, int y)
- {
- return 0;
+
+ public int alterHeat(IReactor reactor, ItemStack yourStack, int x, int y, int heat) {
+ return heat;
}
-
- public int alterHeat(IReactor reactor, ItemStack yourStack, int x, int y, int heat)
- {
- return heat;
+
+ public float influenceExplosion(IReactor reactor, ItemStack yourStack) {
+ return 2 * this.numberOfCells;
}
-
- public float influenceExplosion(IReactor reactor, ItemStack yourStack)
- {
- return 2 * this.numberOfCells;
+
+ public void onUpdate(ItemStack stack, World world, Entity entity, int slotIndex, boolean isCurrentItem) {
+ if (this.sRadiation > 0 && (entity instanceof EntityLivingBase)) {
+ EntityLivingBase entityLiving = (EntityLivingBase) entity;
+ if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) {
+ IC2Potion.radiation.applyTo(entityLiving, sRadiation * 20, sRadiation * 10);
+ }
+ }
}
-
- public void onUpdate(ItemStack stack, World world, Entity entity, int slotIndex, boolean isCurrentItem)
- {
- if (this.sRadiation>0&&(entity instanceof EntityLivingBase))
- {
- EntityLivingBase entityLiving = (EntityLivingBase)entity;
- if (!ItemArmorHazmat.hasCompleteHazmat(entityLiving)) {
- IC2Potion.radiation.applyTo(entityLiving, sRadiation*20, sRadiation*10);
+
+ private class ItemStackCoord {
+ public ItemStack stack;
+ public int x;
+ public int y;
+
+ public ItemStackCoord(ItemStack stack1, int x1, int y1) {
+ this.stack = stack1;
+ this.x = x1;
+ this.y = y1;
}
- }
}
- }
+}
diff --git a/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java b/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java
index a8cc213072..7ceaf43f2e 100644
--- a/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java
+++ b/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java
@@ -1,61 +1,69 @@
package gregtech.api.items;
import ic2.core.util.StackUtil;
-
-import java.util.List;
-
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import java.util.List;
+
public class GT_RadioactiveCell_Item
- extends GT_Generic_Item
-{
- protected int cellCount;
- protected int maxDmg;
- protected int dura;
-
- public GT_RadioactiveCell_Item(String aUnlocalized, String aEnglish, int aCellcount)
- {
- super(aUnlocalized, aEnglish, null);
- this.setMaxStackSize(64);
- this.setMaxDamage(100);
- setNoRepair();
- this.cellCount = Math.max(1, aCellcount);
- }
-
- protected boolean outputPulseForStack(ItemStack aStack)
- {
- NBTTagCompound tNBT = aStack.getTagCompound();
- if (tNBT == null)
- {
- tNBT = new NBTTagCompound();
- aStack.setTagCompound(tNBT);
- }
- tNBT.setInteger("output", tNBT.getInteger("output") + 1);
- return false;//(this.pulserate > 0) || (tNBT.getInteger("output") % -this.pulserate == 0);
- }
-
- protected boolean incrementPulseForStack(ItemStack aStack)
- {
- NBTTagCompound tNBT = aStack.getTagCompound();
- if (tNBT == null)
- {
- tNBT = new NBTTagCompound();
- aStack.setTagCompound(tNBT);
- }
- tNBT.setInteger("pulse", tNBT.getInteger("pulse") + 1);
- return false;//(this.pulserate > 0) || (tNBT.getInteger("pulse") % -this.pulserate == 0);
- }
-
- protected void setDurabilityForStack(ItemStack aStack, int aDurability)
- {
- NBTTagCompound tNBT = aStack.getTagCompound();
- if (tNBT == null)
- {
- tNBT = new NBTTagCompound();
- aStack.setTagCompound(tNBT);
- }
- tNBT.setInteger("durability", aDurability);
+ extends GT_Generic_Item {
+ protected int cellCount;
+ protected int maxDmg;
+ protected int dura;
+
+ public GT_RadioactiveCell_Item(String aUnlocalized, String aEnglish, int aCellcount) {
+ super(aUnlocalized, aEnglish, null);
+ this.setMaxStackSize(64);
+ this.setMaxDamage(100);
+ setNoRepair();
+ this.cellCount = Math.max(1, aCellcount);
+ }
+
+ public static int getDurabilityOfStack(ItemStack aStack) {
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT == null) {
+ tNBT = new NBTTagCompound();
+ aStack.setTagCompound(tNBT);
+ }
+ return tNBT.getInteger("advDmg");
+ }
+
+ protected static int sumUp(int a) {
+ int b = 0;
+ for (int c = 1; c <= a; c++) {
+ b += c;
+ }
+ return b;
+ }
+
+ protected boolean outputPulseForStack(ItemStack aStack) {
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT == null) {
+ tNBT = new NBTTagCompound();
+ aStack.setTagCompound(tNBT);
+ }
+ tNBT.setInteger("output", tNBT.getInteger("output") + 1);
+ return false;//(this.pulserate > 0) || (tNBT.getInteger("output") % -this.pulserate == 0);
+ }
+
+ protected boolean incrementPulseForStack(ItemStack aStack) {
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT == null) {
+ tNBT = new NBTTagCompound();
+ aStack.setTagCompound(tNBT);
+ }
+ tNBT.setInteger("pulse", tNBT.getInteger("pulse") + 1);
+ return false;//(this.pulserate > 0) || (tNBT.getInteger("pulse") % -this.pulserate == 0);
+ }
+
+ protected void setDurabilityForStack(ItemStack aStack, int aDurability) {
+ NBTTagCompound tNBT = aStack.getTagCompound();
+ if (tNBT == null) {
+ tNBT = new NBTTagCompound();
+ aStack.setTagCompound(tNBT);
+ }
+ tNBT.setInteger("durability", aDurability);
// if (this.maxDelay > 0)
// {
// double var4 = (this.maxDelay - aDurability) / this.maxDelay;
@@ -65,97 +73,65 @@ public class GT_RadioactiveCell_Item
// }
// aStack.setItemDamage(aStack.getMaxDamage() - var6);
// }
- }
-
- public static int getDurabilityOfStack(ItemStack aStack)
- {
- NBTTagCompound tNBT = aStack.getTagCompound();
- if (tNBT == null)
- {
- tNBT = new NBTTagCompound();
- aStack.setTagCompound(tNBT);
- }
- return tNBT.getInteger("advDmg");
- }
-
- public int getMaxNuclearDurability()
- {
- return 0;//return this.maxDelay;
- }
-
- public int func_77619_b()
- {
- return 0;
- }
-
- public boolean isBookEnchantable(ItemStack itemstack1, ItemStack itemstack2)
- {
- return false;
- }
-
- public boolean func_82789_a(ItemStack par1ItemStack, ItemStack par2ItemStack)
- {
- return false;
- }
-
- protected static int sumUp(int a)
- {
- int b = 0;
- for (int c = 1; c <= a; c++) {
- b += c;
- }
- return b;
- }
-
- public void setDamageForStack(ItemStack stack, int advDmg)
- {
- NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack);
- nbtData.setInteger("advDmg", advDmg);
- if (this.maxDmg > 0)
- {
- double p = (double)advDmg / (double)this.maxDmg;
- int newDmg = (int)(stack.getMaxDamage() * p);
- if (newDmg >= stack.getMaxDamage()) {
- newDmg = stack.getMaxDamage() - 1;
- }
- stack.setItemDamage(newDmg);
- this.dura = newDmg;
- }
- }
-
- public int getDamageOfStack(ItemStack stack)
- {
- NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack);
- this.dura = nbtData.getInteger("advDmg");
- return this.dura;
- }
-
- 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);
- }
-
- public int getMaxDamageEx()
- {
- return this.maxDmg;
- }
-
- public void damageItemStack(ItemStack stack, int Dmg)
- {
- setDamageForStack(stack, getDamageOfStack(stack) + Dmg);
- }
-
- public void addAdditionalToolTips(List aList, ItemStack aStack)
- {
- super.addAdditionalToolTips(aList, aStack);
- //aList.add("Time left: " + (this.maxDelay - getDurabilityOfStack(aStack)) + " secs");
- aList.add("Durability: "+(this.maxDmg - getDurabilityOfStack(aStack))+"/"+this.maxDmg);
- }
+ }
+
+ public int getMaxNuclearDurability() {
+ return 0;//return this.maxDelay;
+ }
+
+ public int func_77619_b() {
+ return 0;
+ }
+
+ public boolean isBookEnchantable(ItemStack itemstack1, ItemStack itemstack2) {
+ return false;
+ }
+
+ public boolean func_82789_a(ItemStack par1ItemStack, ItemStack par2ItemStack) {
+ return false;
+ }
+
+ public void setDamageForStack(ItemStack stack, int advDmg) {
+ NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack);
+ nbtData.setInteger("advDmg", advDmg);
+ if (this.maxDmg > 0) {
+ double p = (double) advDmg / (double) this.maxDmg;
+ int newDmg = (int) (stack.getMaxDamage() * p);
+ if (newDmg >= stack.getMaxDamage()) {
+ newDmg = stack.getMaxDamage() - 1;
+ }
+ stack.setItemDamage(newDmg);
+ this.dura = newDmg;
+ }
+ }
+
+ public int getDamageOfStack(ItemStack stack) {
+ NBTTagCompound nbtData = StackUtil.getOrCreateNbtData(stack);
+ this.dura = nbtData.getInteger("advDmg");
+ return this.dura;
+ }
+
+ 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);
+ }
+
+ public int getMaxDamageEx() {
+ return this.maxDmg;
+ }
+
+ public void damageItemStack(ItemStack stack, int Dmg) {
+ setDamageForStack(stack, getDamageOfStack(stack) + Dmg);
+ }
+
+ public void addAdditionalToolTips(List aList, ItemStack aStack) {
+ super.addAdditionalToolTips(aList, aStack);
+ //aList.add("Time left: " + (this.maxDelay - getDurabilityOfStack(aStack)) + " secs");
+ aList.add("Durability: " + (this.maxDmg - getDurabilityOfStack(aStack)) + "/" + this.maxDmg);
+ }
}
diff --git a/src/main/java/gregtech/api/items/GT_SolderingTool_Item.java b/src/main/java/gregtech/api/items/GT_SolderingTool_Item.java
index 0c8e3a8e2b..51c300c751 100644
--- a/src/main/java/gregtech/api/items/GT_SolderingTool_Item.java
+++ b/src/main/java/gregtech/api/items/GT_SolderingTool_Item.java
@@ -1,40 +1,40 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.W;
import gregtech.api.GregTech_API;
import gregtech.api.enums.ToolDictNames;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_OreDictUnificator;
-
-import java.util.List;
-
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import java.util.List;
+
+import static gregtech.api.enums.GT_Values.W;
+
public class GT_SolderingTool_Item extends GT_Tool_Item {
- public GT_SolderingTool_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage, int aDischargedGTID) {
- super(aUnlocalized, aEnglish, "To repair and construct Circuitry", aMaxDamage, aEntityDamage, true, -1, aDischargedGTID);
- GT_OreDictUnificator.registerOre(ToolDictNames.craftingToolSolderingIron, new ItemStack(this, 1, W));
- GregTech_API.registerSolderingTool(new ItemStack(this, 1, W));
+ public GT_SolderingTool_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage, int aDischargedGTID) {
+ super(aUnlocalized, aEnglish, "To repair and construct Circuitry", aMaxDamage, aEntityDamage, true, -1, aDischargedGTID);
+ GT_OreDictUnificator.registerOre(ToolDictNames.craftingToolSolderingIron, new ItemStack(this, 1, W));
+ GregTech_API.registerSolderingTool(new ItemStack(this, 1, W));
// setCraftingSound(GregTech_API.sSoundList.get(103));
// setBreakingSound(GregTech_API.sSoundList.get(103));
// setEntityHitSound(GregTech_API.sSoundList.get(103));
// setUsageAmounts(1, 1, 1);
- }
-
- @Override
- public void addAdditionalToolTips(List aList, ItemStack aStack) {
- aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_1", "Sets the Strength of outputted Redstone"));
- aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_2", "Needs Soldering Metal in Inventory!"));
- }
-
- @Override
+ }
+
+ @Override
+ public void addAdditionalToolTips(List aList, ItemStack aStack) {
+ aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_1", "Sets the Strength of outputted Redstone"));
+ aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_2", "Needs Soldering Metal in Inventory!"));
+ }
+
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aWorld.isRemote) {
- return false;
- }
- return false;
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aWorld.isRemote) {
+ return false;
+ }
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Spray_Bug_Item.java b/src/main/java/gregtech/api/items/GT_Spray_Bug_Item.java
index d39d3d67a1..4bcded8fa1 100644
--- a/src/main/java/gregtech/api/items/GT_Spray_Bug_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Spray_Bug_Item.java
@@ -10,9 +10,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class GT_Spray_Bug_Item extends GT_Tool_Item {
- public GT_Spray_Bug_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
- super(aUnlocalized, aEnglish, "A very 'buggy' Spray", aMaxDamage, aEntityDamage, true);/*
- addToEffectiveList(EntityCaveSpider.class.getName());
+ public GT_Spray_Bug_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
+ super(aUnlocalized, aEnglish, "A very 'buggy' Spray", aMaxDamage, aEntityDamage, true);/*
+ addToEffectiveList(EntityCaveSpider.class.getName());
addToEffectiveList(EntitySpider.class.getName());
addToEffectiveList("EntityTFHedgeSpider");
addToEffectiveList("EntityTFKingSpider");
@@ -24,43 +24,44 @@ public class GT_Spray_Bug_Item extends GT_Tool_Item {
setBreakingSound(GregTech_API.sSoundList.get(102));
setEntityHitSound(GregTech_API.sSoundList.get(102));
setUsageAmounts(8, 4, 1);*/
- }
- /*
- @Override
- public void onHitEntity(Entity aEntity) {
- if (aEntity instanceof EntityLiving) {
- ((EntityLiving)aEntity).addPotionEffect(new PotionEffect(Potion.poison.getId(), 60, 1, false));
- ((EntityLiving)aEntity).addPotionEffect(new PotionEffect(Potion.confusion.getId(), 600, 1, false));
- }
- }
-
- @Override
- public ItemStack getEmptiedItem(ItemStack aStack) {
- return ItemList.Spray_Empty.get(1);
- }
- */
- @Override
+ }
+
+ /*
+ @Override
+ public void onHitEntity(Entity aEntity) {
+ if (aEntity instanceof EntityLiving) {
+ ((EntityLiving)aEntity).addPotionEffect(new PotionEffect(Potion.poison.getId(), 60, 1, false));
+ ((EntityLiving)aEntity).addPotionEffect(new PotionEffect(Potion.confusion.getId(), 600, 1, false));
+ }
+ }
+
+ @Override
+ public ItemStack getEmptiedItem(ItemStack aStack) {
+ return ItemList.Spray_Empty.get(1);
+ }
+ */
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aWorld.isRemote) {
- return false;
- }
- Block aBlock = aWorld.getBlock(aX, aY, aZ);
- if (aBlock == null) return false;
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aWorld.isRemote) {
+ return false;
+ }
+ Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) return false;
// byte aMeta = (byte)aWorld.getBlockMetadata(aX, aY, aZ);
- TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
-
- try {
- if (aTileEntity instanceof ic2.api.crops.ICropTile) {
- int tCropBefore = ((ic2.api.crops.ICropTile)aTileEntity).getWeedExStorage();
- if (tCropBefore <= 100 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- ((ic2.api.crops.ICropTile)aTileEntity).setWeedExStorage(tCropBefore+100);
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- return true;
- }
- }
- } catch (Throwable e) {/*Do nothing*/}
-
- return false;
+ TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+
+ try {
+ if (aTileEntity instanceof ic2.api.crops.ICropTile) {
+ int tCropBefore = ((ic2.api.crops.ICropTile) aTileEntity).getWeedExStorage();
+ if (tCropBefore <= 100 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ ((ic2.api.crops.ICropTile) aTileEntity).setWeedExStorage(tCropBefore + 100);
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ return true;
+ }
+ }
+ } catch (Throwable e) {/*Do nothing*/}
+
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Spray_Foam_Item.java b/src/main/java/gregtech/api/items/GT_Spray_Foam_Item.java
index 20f2971e87..afd964f3d6 100644
--- a/src/main/java/gregtech/api/items/GT_Spray_Foam_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Spray_Foam_Item.java
@@ -1,6 +1,5 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.D1;
import gregtech.api.GregTech_API;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.util.GT_Log;
@@ -15,146 +14,158 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
+import static gregtech.api.enums.GT_Values.D1;
+
public class GT_Spray_Foam_Item extends GT_Tool_Item {
- public GT_Spray_Foam_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
- super(aUnlocalized, aEnglish, "Precision Spray", aMaxDamage, aEntityDamage, true);/*
- setCraftingSound(GregTech_API.sSoundList.get(102));
+ public GT_Spray_Foam_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
+ super(aUnlocalized, aEnglish, "Precision Spray", aMaxDamage, aEntityDamage, true);/*
+ setCraftingSound(GregTech_API.sSoundList.get(102));
setBreakingSound(GregTech_API.sSoundList.get(102));
setEntityHitSound(GregTech_API.sSoundList.get(102));
setUsageAmounts(25, 3, 1);*/
- }
- /*
- @Override
- public ItemStack getEmptiedItem(ItemStack aStack) {
- return ItemList.Spray_Empty.get(1);
- }
-
- public void switchMode(ItemStack aStack, EntityPlayer aPlayer) {
+ }
+
+ /*
+ @Override
+ public ItemStack getEmptiedItem(ItemStack aStack) {
+ return ItemList.Spray_Empty.get(1);
+ }
+
+ public void switchMode(ItemStack aStack, EntityPlayer aPlayer) {
setMode(aStack, (getMode(aStack) + 1) % 3);
switch (getMode(aStack)) {
case 0: GT_Utility.sendChatToPlayer(aPlayer, "Single Block Mode"); break;
case 1: GT_Utility.sendChatToPlayer(aPlayer, "4m Line Mode"); break;
case 2: GT_Utility.sendChatToPlayer(aPlayer, "3mx3m Area Mode"); break;
}
- }
-
- @Override
- public void addAdditionalToolTips(List aList, ItemStack aStack) {
- super.addAdditionalToolTips(aList, aStack);
+ }
+
+ @Override
+ public void addAdditionalToolTips(List aList, ItemStack aStack) {
+ super.addAdditionalToolTips(aList, aStack);
switch (getMode(aStack)) {
case 0: aList.add("Single Block Mode"); break;
case 1: aList.add("4m Line Mode"); break;
case 2: aList.add("3mx3m Area Mode"); break;
}
- }
-
- @Override
+ }
+
+ @Override
public ItemStack onItemRightClick(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
- if (aPlayer.isSneaking()) switchMode(aStack, aPlayer);
+ if (aPlayer.isSneaking()) switchMode(aStack, aPlayer);
return super.onItemRightClick(aStack, aWorld, aPlayer);
}
- */
- @Override
+ */
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aPlayer.isSneaking()) return false;
- if (aWorld.isRemote) {
- return false;
- }
- Block aBlock = aWorld.getBlock(aX, aY, aZ);
- if (aBlock == null) return false;
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aPlayer.isSneaking()) return false;
+ if (aWorld.isRemote) {
+ return false;
+ }
+ Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) return false;
// byte aMeta = (byte)aWorld.getBlockMetadata(aX, aY, aZ);
- TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
-
- try {
- if (GT_Utility.getClassName(aTileEntity).startsWith("TileEntityCable")) {
- if (GT_Utility.getPublicField(aTileEntity, "foamed").getByte(aTileEntity) == 0) {
- if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- GT_Utility.callPublicMethod(aTileEntity, "changeFoam", (byte)1);
- return true;
- }
- }
- return false;
- }
- } catch(Throwable e) {
- if (D1) e.printStackTrace(GT_Log.err);
- }
-
- if (aTileEntity instanceof BaseMetaPipeEntity && (((BaseMetaPipeEntity)aTileEntity).mConnections & -64) == 0) {
- if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- ((BaseMetaPipeEntity)aTileEntity).mConnections |= 64;
- }
- return true;
- }
-
- aX += ForgeDirection.getOrientation(aSide).offsetX;
- aY += ForgeDirection.getOrientation(aSide).offsetY;
- aZ += ForgeDirection.getOrientation(aSide).offsetZ;
-
- ItemStack tStack = GT_ModHandler.getIC2Item("constructionFoam", 1);
- if (tStack != null && tStack.getItem() instanceof ItemBlock) {
+ TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+
+ try {
+ if (GT_Utility.getClassName(aTileEntity).startsWith("TileEntityCable")) {
+ if (GT_Utility.getPublicField(aTileEntity, "foamed").getByte(aTileEntity) == 0) {
+ if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ GT_Utility.callPublicMethod(aTileEntity, "changeFoam", (byte) 1);
+ return true;
+ }
+ }
+ return false;
+ }
+ } catch (Throwable e) {
+ if (D1) e.printStackTrace(GT_Log.err);
+ }
+
+ if (aTileEntity instanceof BaseMetaPipeEntity && (((BaseMetaPipeEntity) aTileEntity).mConnections & -64) == 0) {
+ if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ ((BaseMetaPipeEntity) aTileEntity).mConnections |= 64;
+ }
+ return true;
+ }
+
+ aX += ForgeDirection.getOrientation(aSide).offsetX;
+ aY += ForgeDirection.getOrientation(aSide).offsetY;
+ aZ += ForgeDirection.getOrientation(aSide).offsetZ;
+
+ ItemStack tStack = GT_ModHandler.getIC2Item("constructionFoam", 1);
+ if (tStack != null && tStack.getItem() instanceof ItemBlock) {
int tRotationPitch = Math.round(aPlayer.rotationPitch);
byte tSide = 0;
if (tRotationPitch >= 65) {
- tSide = 1;
+ tSide = 1;
} else if (tRotationPitch <= -65) {
- tSide = 0;
+ tSide = 0;
} else {
switch (MathHelper.floor_double((aPlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3) {
- case 0: tSide = 2; break;
- case 1: tSide = 5; break;
- case 2: tSide = 3; break;
- case 3: tSide = 4; break;
+ case 0:
+ tSide = 2;
+ break;
+ case 1:
+ tSide = 5;
+ break;
+ case 2:
+ tSide = 3;
+ break;
+ case 3:
+ tSide = 4;
+ break;
}
}
- switch (0) {
- case 0:
- if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- aWorld.setBlock(aX, aY, aZ, GT_Utility.getBlockFromStack(tStack), tStack.getItemDamage(), 3);
- return true;
- }
- break;
- case 1:
- for (byte i = 0; i < 4; i++) {
- if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- aWorld.setBlock(aX, aY, aZ, GT_Utility.getBlockFromStack(tStack), tStack.getItemDamage(), 3);
- } else {
- if (i == 0) return false;
- break;
- }
- aX -= ForgeDirection.getOrientation(tSide).offsetX;
- aY -= ForgeDirection.getOrientation(tSide).offsetY;
- aZ -= ForgeDirection.getOrientation(tSide).offsetZ;
- }
- return true;
- case 2:
- boolean temp = false,
- tXFactor = (ForgeDirection.getOrientation(tSide).offsetX == 0),
- tYFactor = (ForgeDirection.getOrientation(tSide).offsetY == 0),
- tZFactor = (ForgeDirection.getOrientation(tSide).offsetZ == 0);
-
- aX -= (tXFactor ? 1 : 0);
- aY -= (tYFactor ? 1 : 0);
- aZ -= (tZFactor ? 1 : 0);
-
- for (byte i = 0; i < 3; i++) for (byte j = 0; j < 3; j++) {
- if (GT_Utility.isBlockAir(aWorld, aX + (tXFactor?i:0), aY + (!tXFactor&&tYFactor?i:0) + (!tZFactor&&tYFactor?j:0), aZ + (tZFactor?j:0))) {
- if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- aWorld.setBlock(aX + (tXFactor?i:0), aY + (!tXFactor&&tYFactor?i:0) + (!tZFactor&&tYFactor?j:0), aZ + (tZFactor?j:0), GT_Utility.getBlockFromStack(tStack), tStack.getItemDamage(), 3);
- temp = true;
- } else {
- break;
- }
- }
- }
- return temp;
- }
- }
- return false;
+ switch (0) {
+ case 0:
+ if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ aWorld.setBlock(aX, aY, aZ, GT_Utility.getBlockFromStack(tStack), tStack.getItemDamage(), 3);
+ return true;
+ }
+ break;
+ case 1:
+ for (byte i = 0; i < 4; i++) {
+ if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ aWorld.setBlock(aX, aY, aZ, GT_Utility.getBlockFromStack(tStack), tStack.getItemDamage(), 3);
+ } else {
+ if (i == 0) return false;
+ break;
+ }
+ aX -= ForgeDirection.getOrientation(tSide).offsetX;
+ aY -= ForgeDirection.getOrientation(tSide).offsetY;
+ aZ -= ForgeDirection.getOrientation(tSide).offsetZ;
+ }
+ return true;
+ case 2:
+ boolean temp = false,
+ tXFactor = (ForgeDirection.getOrientation(tSide).offsetX == 0),
+ tYFactor = (ForgeDirection.getOrientation(tSide).offsetY == 0),
+ tZFactor = (ForgeDirection.getOrientation(tSide).offsetZ == 0);
+
+ aX -= (tXFactor ? 1 : 0);
+ aY -= (tYFactor ? 1 : 0);
+ aZ -= (tZFactor ? 1 : 0);
+
+ for (byte i = 0; i < 3; i++)
+ for (byte j = 0; j < 3; j++) {
+ if (GT_Utility.isBlockAir(aWorld, aX + (tXFactor ? i : 0), aY + (!tXFactor && tYFactor ? i : 0) + (!tZFactor && tYFactor ? j : 0), aZ + (tZFactor ? j : 0))) {
+ if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ aWorld.setBlock(aX + (tXFactor ? i : 0), aY + (!tXFactor && tYFactor ? i : 0) + (!tZFactor && tYFactor ? j : 0), aZ + (tZFactor ? j : 0), GT_Utility.getBlockFromStack(tStack), tStack.getItemDamage(), 3);
+ temp = true;
+ } else {
+ break;
+ }
+ }
+ }
+ return temp;
+ }
+ }
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Spray_Hardener_Item.java b/src/main/java/gregtech/api/items/GT_Spray_Hardener_Item.java
index bd90c295ec..b9b0b7462b 100644
--- a/src/main/java/gregtech/api/items/GT_Spray_Hardener_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Spray_Hardener_Item.java
@@ -1,6 +1,5 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.D1;
import gregtech.api.GregTech_API;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.util.GT_Log;
@@ -13,58 +12,60 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
+import static gregtech.api.enums.GT_Values.D1;
+
public class GT_Spray_Hardener_Item extends GT_Tool_Item {
- public GT_Spray_Hardener_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
- super(aUnlocalized, aEnglish, "Construction Foam Hardener", aMaxDamage, aEntityDamage, true);/*
- setCraftingSound(GregTech_API.sSoundList.get(102));
+ public GT_Spray_Hardener_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
+ super(aUnlocalized, aEnglish, "Construction Foam Hardener", aMaxDamage, aEntityDamage, true);/*
+ setCraftingSound(GregTech_API.sSoundList.get(102));
setBreakingSound(GregTech_API.sSoundList.get(102));
setEntityHitSound(GregTech_API.sSoundList.get(102));
setUsageAmounts(16, 3, 1);*/
- }
-
- @Override
+ }
+
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aWorld.isRemote) {
- return false;
- }
- Block aBlock = aWorld.getBlock(aX, aY, aZ);
- if (aBlock == null) return false;
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aWorld.isRemote) {
+ return false;
+ }
+ Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) return false;
// byte aMeta = (byte)aWorld.getBlockMetadata(aX, aY, aZ);
- TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
-
- try {
- if (GT_Utility.getClassName(aTileEntity).startsWith("TileEntityCable")) {
- if (GT_Utility.getPublicField(aTileEntity, "foamed").getByte(aTileEntity) == 1) {
- if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- GT_Utility.callPublicMethod(aTileEntity, "changeFoam", (byte)2);
- return true;
- }
- }
- return false;
- }
- } catch(Throwable e) {
- if (D1) e.printStackTrace(GT_Log.err);
- }
-
- ItemStack tStack1 = GT_ModHandler.getIC2Item("constructionFoam", 1), tStack2 = GT_ModHandler.getIC2Item("constructionFoamWall", 1);
- if (tStack1 != null && tStack1.isItemEqual(new ItemStack(aBlock)) && tStack2 != null && tStack2.getItem() != null && tStack2.getItem() instanceof ItemBlock) {
- if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- aWorld.setBlock(aX, aY, aZ, GT_Utility.getBlockFromStack(tStack2), 7, 3);
- }
- return true;
- }
-
- if (aTileEntity instanceof BaseMetaPipeEntity && (((BaseMetaPipeEntity)aTileEntity).mConnections & -64) == 64) {
- if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- ((BaseMetaPipeEntity)aTileEntity).mConnections = (byte)((((BaseMetaPipeEntity)aTileEntity).mConnections & ~64) | -128);
- }
- return true;
- }
-
- return false;
+ TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+
+ try {
+ if (GT_Utility.getClassName(aTileEntity).startsWith("TileEntityCable")) {
+ if (GT_Utility.getPublicField(aTileEntity, "foamed").getByte(aTileEntity) == 1) {
+ if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ GT_Utility.callPublicMethod(aTileEntity, "changeFoam", (byte) 2);
+ return true;
+ }
+ }
+ return false;
+ }
+ } catch (Throwable e) {
+ if (D1) e.printStackTrace(GT_Log.err);
+ }
+
+ ItemStack tStack1 = GT_ModHandler.getIC2Item("constructionFoam", 1), tStack2 = GT_ModHandler.getIC2Item("constructionFoamWall", 1);
+ if (tStack1 != null && tStack1.isItemEqual(new ItemStack(aBlock)) && tStack2 != null && tStack2.getItem() != null && tStack2.getItem() instanceof ItemBlock) {
+ if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ aWorld.setBlock(aX, aY, aZ, GT_Utility.getBlockFromStack(tStack2), 7, 3);
+ }
+ return true;
+ }
+
+ if (aTileEntity instanceof BaseMetaPipeEntity && (((BaseMetaPipeEntity) aTileEntity).mConnections & -64) == 64) {
+ if (GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ ((BaseMetaPipeEntity) aTileEntity).mConnections = (byte) ((((BaseMetaPipeEntity) aTileEntity).mConnections & ~64) | -128);
+ }
+ return true;
+ }
+
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Spray_Hydration_Item.java b/src/main/java/gregtech/api/items/GT_Spray_Hydration_Item.java
index 2fbc1f38f9..cb3368b683 100644
--- a/src/main/java/gregtech/api/items/GT_Spray_Hydration_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Spray_Hydration_Item.java
@@ -11,43 +11,43 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class GT_Spray_Hydration_Item extends GT_Tool_Item {
- public GT_Spray_Hydration_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
- super(aUnlocalized, aEnglish, "To hydrate Crops and similar", aMaxDamage, aEntityDamage, true);/*
- setCraftingSound(GregTech_API.sSoundList.get(102));
+ public GT_Spray_Hydration_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
+ super(aUnlocalized, aEnglish, "To hydrate Crops and similar", aMaxDamage, aEntityDamage, true);/*
+ setCraftingSound(GregTech_API.sSoundList.get(102));
setBreakingSound(GregTech_API.sSoundList.get(102));
setEntityHitSound(GregTech_API.sSoundList.get(102));
setUsageAmounts(20, 3, 1);*/
- }
-
- @Override
+ }
+
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aWorld.isRemote) {
- return false;
- }
- Block aBlock = aWorld.getBlock(aX, aY, aZ);
- if (aBlock == null) return false;
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aWorld.isRemote) {
+ return false;
+ }
+ Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) return false;
// byte aMeta = (byte)aWorld.getBlockMetadata(aX, aY, aZ);
- TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
-
- try {
- if (aTileEntity instanceof ic2.api.crops.ICropTile) {
- int tCropBefore = ((ic2.api.crops.ICropTile)aTileEntity).getHydrationStorage();
- if (tCropBefore <= 100 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- ((ic2.api.crops.ICropTile)aTileEntity).setHydrationStorage(tCropBefore+100);
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- }
- return true;
- }
- } catch (Throwable e) {/*Do nothing*/}
-
- if (aTileEntity instanceof IGregTechTileEntity) {
- if (((IGregTechTileEntity)aTileEntity).getColorization() >= 0 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- ((IGregTechTileEntity)aTileEntity).setColorization((byte)-1);
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- }
- }
-
- return false;
+ TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
+
+ try {
+ if (aTileEntity instanceof ic2.api.crops.ICropTile) {
+ int tCropBefore = ((ic2.api.crops.ICropTile) aTileEntity).getHydrationStorage();
+ if (tCropBefore <= 100 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ ((ic2.api.crops.ICropTile) aTileEntity).setHydrationStorage(tCropBefore + 100);
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ }
+ return true;
+ }
+ } catch (Throwable e) {/*Do nothing*/}
+
+ if (aTileEntity instanceof IGregTechTileEntity) {
+ if (((IGregTechTileEntity) aTileEntity).getColorization() >= 0 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ ((IGregTechTileEntity) aTileEntity).setColorization((byte) -1);
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ }
+ }
+
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Spray_Ice_Item.java b/src/main/java/gregtech/api/items/GT_Spray_Ice_Item.java
index 2e8c4ed0a8..dfc43906a0 100644
--- a/src/main/java/gregtech/api/items/GT_Spray_Ice_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Spray_Ice_Item.java
@@ -1,14 +1,10 @@
package gregtech.api.items;
-import static gregtech.api.enums.GT_Values.W;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
-
-import java.util.Arrays;
-
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@@ -16,10 +12,14 @@ import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
+import java.util.Arrays;
+
+import static gregtech.api.enums.GT_Values.W;
+
public class GT_Spray_Ice_Item extends GT_Tool_Item {
- public GT_Spray_Ice_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
- super(aUnlocalized, aEnglish, "Very effective against Slimes", aMaxDamage, aEntityDamage, true);/*
- addToEffectiveList(EntitySlime.class.getName());
+ public GT_Spray_Ice_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
+ super(aUnlocalized, aEnglish, "Very effective against Slimes", aMaxDamage, aEntityDamage, true);/*
+ addToEffectiveList(EntitySlime.class.getName());
addToEffectiveList("BlueSlime");
addToEffectiveList("SlimeClone");
addToEffectiveList("MetalSlime");
@@ -30,11 +30,11 @@ public class GT_Spray_Ice_Item extends GT_Tool_Item {
setBreakingSound(GregTech_API.sSoundList.get(102));
setEntityHitSound(GregTech_API.sSoundList.get(102));
setUsageAmounts(4, 16, 1);*/
-
- for (Object tName : Arrays.asList(OrePrefixes.bucket.get(Materials.Water), OrePrefixes.cell.get(Materials.Water), OrePrefixes.capsule.get(Materials.Water))) {
- GT_ModHandler.addShapelessCraftingRecipe(new ItemStack(Blocks.ice, 1, 0), new Object[] {new ItemStack(this, 1, W), tName});
- }
- }
+
+ for (Object tName : Arrays.asList(OrePrefixes.bucket.get(Materials.Water), OrePrefixes.cell.get(Materials.Water), OrePrefixes.capsule.get(Materials.Water))) {
+ GT_ModHandler.addShapelessCraftingRecipe(new ItemStack(Blocks.ice, 1, 0), new Object[]{new ItemStack(this, 1, W), tName});
+ }
+ }
/*
@Override
public void onHitEntity(Entity aEntity) {
@@ -44,38 +44,38 @@ public class GT_Spray_Ice_Item extends GT_Tool_Item {
}
}
*/
-
- @Override
+
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aWorld.isRemote) {
- return false;
- }
- aX += ForgeDirection.getOrientation(aSide).offsetX;
- aY += ForgeDirection.getOrientation(aSide).offsetY;
- aZ += ForgeDirection.getOrientation(aSide).offsetZ;
- Block aBlock = aWorld.getBlock(aX, aY, aZ);
- if (aBlock == null) return false;
- byte aMeta = (byte)aWorld.getBlockMetadata(aX, aY, aZ);
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aWorld.isRemote) {
+ return false;
+ }
+ aX += ForgeDirection.getOrientation(aSide).offsetX;
+ aY += ForgeDirection.getOrientation(aSide).offsetY;
+ aZ += ForgeDirection.getOrientation(aSide).offsetZ;
+ Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) return false;
+ byte aMeta = (byte) aWorld.getBlockMetadata(aX, aY, aZ);
// TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
-
- if (aBlock == Blocks.water || aBlock == Blocks.flowing_water) {
- if (aMeta == 0 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- aWorld.setBlock(aX, aY, aZ, Blocks.ice, 0, 3);
- return true;
- }
- return false;
- }
-
- if (aBlock == Blocks.lava || aBlock == Blocks.flowing_lava) {
- if (aMeta == 0 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
- GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
- aWorld.setBlock(aX, aY, aZ, Blocks.obsidian, 0, 3);
- return true;
- }
- return false;
- }
- return false;
+
+ if (aBlock == Blocks.water || aBlock == Blocks.flowing_water) {
+ if (aMeta == 0 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ aWorld.setBlock(aX, aY, aZ, Blocks.ice, 0, 3);
+ return true;
+ }
+ return false;
+ }
+
+ if (aBlock == Blocks.lava || aBlock == Blocks.flowing_lava) {
+ if (aMeta == 0 && GT_ModHandler.damageOrDechargeItem(aStack, 1, 1000, aPlayer)) {
+ GT_Utility.sendSoundToPlayers(aWorld, GregTech_API.sSoundList.get(102), 1.0F, -1, aX, aY, aZ);
+ aWorld.setBlock(aX, aY, aZ, Blocks.obsidian, 0, 3);
+ return true;
+ }
+ return false;
+ }
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Spray_Pepper_Item.java b/src/main/java/gregtech/api/items/GT_Spray_Pepper_Item.java
index 65f7469126..b186cca40a 100644
--- a/src/main/java/gregtech/api/items/GT_Spray_Pepper_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Spray_Pepper_Item.java
@@ -1,29 +1,28 @@
package gregtech.api.items;
import gregtech.api.util.GT_LanguageManager;
-
-import java.util.List;
-
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
+import java.util.List;
+
public class GT_Spray_Pepper_Item extends GT_Tool_Item {
- public GT_Spray_Pepper_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
- super(aUnlocalized, aEnglish, "To defend yourself against Bears", aMaxDamage, aEntityDamage, true);/*
- setCraftingSound(GregTech_API.sSoundList.get(102));
+ public GT_Spray_Pepper_Item(String aUnlocalized, String aEnglish, int aMaxDamage, int aEntityDamage) {
+ super(aUnlocalized, aEnglish, "To defend yourself against Bears", aMaxDamage, aEntityDamage, true);/*
+ setCraftingSound(GregTech_API.sSoundList.get(102));
setBreakingSound(GregTech_API.sSoundList.get(102));
setEntityHitSound(GregTech_API.sSoundList.get(102));
setUsageAmounts(1, 8, 1);*/
- }
-
- @Override
- public void addAdditionalToolTips(List aList, ItemStack aStack) {
- aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_1", "especially Pedobears, Care Bears,"));
- aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_2", "Confession Bears, Bear Grylls"));
- aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_3", "And ofcourse Man-Bear-Pig"));
- }
+ }
+
+ @Override
+ public void addAdditionalToolTips(List aList, ItemStack aStack) {
+ aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_1", "especially Pedobears, Care Bears,"));
+ aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_2", "Confession Bears, Bear Grylls"));
+ aList.add(GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".tooltip_3", "And ofcourse Man-Bear-Pig"));
+ }
/*
@Override
public void onHitEntity(Entity aEntity) {
@@ -35,18 +34,18 @@ public class GT_Spray_Pepper_Item extends GT_Tool_Item {
}
}
*/
-
- @Override
+
+ @Override
public boolean onItemUseFirst(ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) {
- super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
- if (aWorld.isRemote) {
- return false;
- }
- Block aBlock = aWorld.getBlock(aX, aY, aZ);
- if (aBlock == null) return false;
+ super.onItemUseFirst(aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ);
+ if (aWorld.isRemote) {
+ return false;
+ }
+ Block aBlock = aWorld.getBlock(aX, aY, aZ);
+ if (aBlock == null) return false;
// byte aMeta = (byte)aWorld.getBlockMetadata(aX, aY, aZ);
// TileEntity aTileEntity = aWorld.getTileEntity(aX, aY, aZ);
-
- return false;
+
+ return false;
}
} \ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Tool_Item.java b/src/main/java/gregtech/api/items/GT_Tool_Item.java
index 6c61d596f3..c66703497e 100644
--- a/src/main/java/gregtech/api/items/GT_Tool_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Tool_Item.java
@@ -6,20 +6,20 @@ import gregtech.api.util.GT_ModHandler;
* This is just a basic Tool, which has normal durability and could break Blocks.
*/
public class GT_Tool_Item extends GT_Generic_Item {
- public GT_Tool_Item(String aUnlocalized, String aEnglish, String aTooltip, int aMaxDamage, int aEntityDamage, boolean aSwingIfUsed) {
- this(aUnlocalized, aEnglish, aTooltip, aMaxDamage, aEntityDamage, aSwingIfUsed, -1, -1);
- }
-
- public GT_Tool_Item(String aUnlocalized, String aEnglish, String aTooltip, int aMaxDamage, int aEntityDamage, boolean aSwingIfUsed, int aChargedGTID, int aDisChargedGTID) {
- this(aUnlocalized, aEnglish, aTooltip, aMaxDamage, aEntityDamage, aSwingIfUsed, aChargedGTID, aDisChargedGTID, 0, 0.0F);
- }
-
- public GT_Tool_Item(String aUnlocalized, String aEnglish, String aTooltip, int aMaxDamage, int aEntityDamage, boolean aSwingIfUsed, int aChargedGTID, int aDisChargedGTID, int aToolQuality, float aToolStrength) {
- super(aUnlocalized, aEnglish, aTooltip, aTooltip != null && !aTooltip.equals("Doesn't work as intended, this is a Bug"));
- setMaxDamage(aMaxDamage);
- setMaxStackSize(1);
- setNoRepair();
- setFull3D();
- GT_ModHandler.registerBoxableItemToToolBox(this);
- }
+ public GT_Tool_Item(String aUnlocalized, String aEnglish, String aTooltip, int aMaxDamage, int aEntityDamage, boolean aSwingIfUsed) {
+ this(aUnlocalized, aEnglish, aTooltip, aMaxDamage, aEntityDamage, aSwingIfUsed, -1, -1);
+ }
+
+ public GT_Tool_Item(String aUnlocalized, String aEnglish, String aTooltip, int aMaxDamage, int aEntityDamage, boolean aSwingIfUsed, int aChargedGTID, int aDisChargedGTID) {
+ this(aUnlocalized, aEnglish, aTooltip, aMaxDamage, aEntityDamage, aSwingIfUsed, aChargedGTID, aDisChargedGTID, 0, 0.0F);
+ }
+
+ public GT_Tool_Item(String aUnlocalized, String aEnglish, String aTooltip, int aMaxDamage, int aEntityDamage, boolean aSwingIfUsed, int aChargedGTID, int aDisChargedGTID, int aToolQuality, float aToolStrength) {
+ super(aUnlocalized, aEnglish, aTooltip, aTooltip != null && !aTooltip.equals("Doesn't work as intended, this is a Bug"));
+ setMaxDamage(aMaxDamage);
+ setMaxStackSize(1);
+ setNoRepair();
+ setFull3D();
+ GT_ModHandler.registerBoxableItemToToolBox(this);
+ }
} \ No newline at end of file