package net.tropicraft.item; import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; import net.tropicraft.registry.TCCreativeTabRegistry; import net.tropicraft.util.ColorHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ItemTropicraftOre extends ItemTropicraftMulti { @SideOnly(Side.CLIENT) private IIcon[] unrefinedIcons; public ItemTropicraftOre(String[] names) { super(names); this.setCreativeTab(TCCreativeTabRegistry.tabMaterials); } /** * Returns the unlocalized name of this item. This version accepts an ItemStack so different stacks can have * different names based on their damage or NBT. */ @Override public String getUnlocalizedName(ItemStack stack) { int i = MathHelper.clamp_int(stack.getItemDamage(), 0, names.length - 1); return super.getUnlocalizedName() + "_" + names[i]; } @SuppressWarnings({ "rawtypes", "unchecked" }) @SideOnly(Side.CLIENT) @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4) { int damage = itemstack.getItemDamage(); if (damage == 5 || damage == 6) { float refinedPercentage = getTagCompound(itemstack).getFloat("AmtRefined"); list.add(ColorHelper.color(3) + StatCollector.translateToLocal("gui.tropicraft:amtRefined") + ": " + refinedPercentage + "%"); } } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { // Add original ores for (int i = 0; i < 5; i++) { list.add(new ItemStack(item, 1, i)); } ItemStack u1 = new ItemStack(item, 1, 5); getTagCompound(u1).setFloat("AmtRefined", 0F); ItemStack u2 = new ItemStack(item, 1, 5); getTagCompound(u2).setFloat("AmtRefined", 33.333F); ItemStack u3 = new ItemStack(item, 1, 5); getTagCompound(u3).setFloat("AmtRefined", 66.667F); ItemStack refined = new ItemStack(item, 1, 6); getTagCompound(refined).setFloat("AmtRefined", 100.000F); // Add unrefined 1, 2, 3, then refined 'raftous' ore list.add(u1); list.add(u2); list.add(u3); list.add(refined); // Souzium list.add(new ItemStack(item, 1, 7)); } @SideOnly(Side.CLIENT) public IIcon getIconIndex(ItemStack stack) { int damage = stack.getItemDamage(); float refinedAmt = getTagCompound(stack).getFloat("AmtRefined"); // 33% if (refinedAmt > 32 && refinedAmt < 34) { return unrefinedIcons[0]; } // 66% if (refinedAmt > 65 && refinedAmt < 67) return unrefinedIcons[1]; return this.getIconFromDamage(damage); } /** * Returns which percentage of unrefined this itemstack is * @param stack * @return */ private int getUnrefinedIndex(ItemStack stack) { float refinedAmt = getTagCompound(stack).getFloat("AmtRefined"); // 33% if (refinedAmt > 32 && refinedAmt < 34) return 1; // 66% if (refinedAmt > 65 && refinedAmt < 67) return 2; return 0; } /** * Register all icons here * @param iconRegister Icon registry */ @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { icons = new IIcon[names.length]; for (int i = 0 ; i < names.length ; i++) { icons[i] = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1) + "_" + names[i]); } unrefinedIcons = new IIcon[2]; for (int i = 0; i < 2; i++) { unrefinedIcons[i] = iconRegister.registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf(".") + 1) + "_" + names[5] + "" + (i + 1)); } } }