package crazypants.enderio.material; import java.util.List; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import crazypants.enderio.EnderIOTab; import crazypants.enderio.ModObject; public class ItemMaterial extends Item { private final IIcon[] icons; public static ItemMaterial create() { ItemMaterial mp = new ItemMaterial(); mp.init(); return mp; } private ItemMaterial() { setHasSubtypes(true); setMaxDamage(0); setCreativeTab(EnderIOTab.tabEnderIO); setUnlocalizedName(ModObject.itemMaterial.unlocalisedName); icons = new IIcon[Material.values().length]; } private void init() { GameRegistry.registerItem(this, ModObject.itemMaterial.unlocalisedName); } @Override @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int damage) { damage = MathHelper.clamp_int(damage, 0, Material.values().length - 1); return icons[damage]; } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister IIconRegister) { int numParts = Material.values().length; for (int i = 0; i < numParts; i++) { icons[i] = IIconRegister.registerIcon(Material.values()[i].iconKey); } } @Override public String getUnlocalizedName(ItemStack par1ItemStack) { int i = MathHelper.clamp_int(par1ItemStack.getItemDamage(), 0, Material.values().length - 1); return Material.values()[i].unlocalisedName; } @Override @SuppressWarnings({ "rawtypes", "unchecked" }) @SideOnly(Side.CLIENT) public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int j = 0; j < Material.values().length; ++j) { par3List.add(new ItemStack(par1, 1, j)); } } @Override @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack par1ItemStack, int pass) { if(par1ItemStack == null) { return false; } int damage = MathHelper.clamp_int(par1ItemStack.getItemDamage(), 0, Material.values().length - 1); return Material.values()[damage].hasEffect; } }