diff options
Diffstat (limited to 'src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java')
-rw-r--r-- | src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java b/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java new file mode 100644 index 0000000000..a8cc213072 --- /dev/null +++ b/src/main/java/gregtech/api/items/GT_RadioactiveCell_Item.java @@ -0,0 +1,161 @@ +package gregtech.api.items; + +import ic2.core.util.StackUtil; + +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +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); +// if (this.maxDelay > 0) +// { +// double var4 = (this.maxDelay - aDurability) / this.maxDelay; +// int var6 = (int)(aStack.getMaxDamage() * var4); +// if (var6 >= aStack.getMaxDamage()) { +// var6 = aStack.getMaxDamage() - 1; +// } +// 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); + } +} |