package net.tropicraft.item.scuba; import java.util.List; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.tropicraft.item.ItemTropicraft; import net.tropicraft.item.scuba.ItemScubaGear.AirType; import net.tropicraft.registry.TCCreativeTabRegistry; import net.tropicraft.util.ColorHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ItemScubaTank extends ItemTropicraft { public ItemScubaTank() { this.setHasSubtypes(true); this.setMaxDamage(0); this.maxStackSize = 1; this.setCreativeTab(TCCreativeTabRegistry.tabMisc); } /** * Called when item is crafted/smelted. Used only by maps so far. */ public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { } /** * allows items to add custom lines of information to the mouseover description */ @SuppressWarnings({ "rawtypes", "unchecked" }) @SideOnly(Side.CLIENT) @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4) { AirType airType = itemstack.getItemDamage() == 1 ? AirType.TRIMIX : AirType.REGULAR; String airRemaining = getTagCompound(itemstack).getInteger("AirContained") + " psi"; list.add(ColorHelper.color(9) + StatCollector.translateToLocal("gui.tropicraft:airType") + ": " + ColorHelper.color(7) + airType.getDisplayName()); list.add(ColorHelper.color(9) + StatCollector.translateToLocal("gui.tropicraft:maxAirCapacity") + ": " + ColorHelper.color(7) + airType.getMaxCapacity() + " psi"); list.add(ColorHelper.color(9) + StatCollector.translateToLocal("gui.tropicraft:airRemaining") + ": " + ColorHelper.color(7) + airRemaining); list.add(ColorHelper.color(9) + String.format("%s: %s%.3f psi/sec", StatCollector.translateToLocal("gui.tropicraft:useEfficiency"), ColorHelper.color(7), (airType.getUsageRate() * 20))); } /** * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) */ @SuppressWarnings({ "unchecked", "rawtypes" }) @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { ItemStack singleTankRegular = new ItemStack(item, 1, 0); getTagCompound(singleTankRegular).setInteger("AirContained", ItemScubaGear.AirType.REGULAR.getMaxCapacity()); list.add(singleTankRegular); ItemStack singleTankTrimix = new ItemStack(item, 1, 1); getTagCompound(singleTankTrimix).setInteger("AirContained", ItemScubaGear.AirType.TRIMIX.getMaxCapacity()); list.add(singleTankTrimix); ItemStack singleTankTrimix2 = new ItemStack(item, 1, 2); getTagCompound(singleTankTrimix2).setInteger("AirContained", 0); list.add(singleTankTrimix2); } /** * Retrives an existing nbt tag compound or creates a new one if it is null * @param stack */ public NBTTagCompound getTagCompound(ItemStack stack) { if (!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); return stack.getTagCompound(); } }