    001package net.minecraft.item;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.block.Block;
    006import net.minecraft.util.Icon;
    007
    008public class ItemColored extends ItemBlock
    009{
    010    private final Block blockRef;
    011    private String[] blockNames;
    012
    013    public ItemColored(int par1, boolean par2)
    014    {
    015        super(par1);
    016        this.blockRef = Block.blocksList[this.getBlockID()];
    017
    018        if (par2)
    019        {
    020            this.setMaxDamage(0);
    021            this.setHasSubtypes(true);
    022        }
    023    }
    024
    025    @SideOnly(Side.CLIENT)
    026    public int getColorFromItemStack(ItemStack par1ItemStack, int par2)
    027    {
    028        return this.blockRef.getRenderColor(par1ItemStack.getItemDamage());
    029    }
    030
    031    /**
    032     * Returns the metadata of the block which this Item (ItemBlock) can place
    033     */
    034    public int getMetadata(int par1)
    035    {
    036        return par1;
    037    }
    038
    039    /**
    040     * Sets the array of strings to be used for name lookups from item damage to metadata
    041     */
    042    public ItemColored setBlockNames(String[] par1ArrayOfStr)
    043    {
    044        this.blockNames = par1ArrayOfStr;
    045        return this;
    046    }
    047
    048    @SideOnly(Side.CLIENT)
    049
    050    /**
    051     * Gets an icon index based on an item's damage value
    052     */
    053    public Icon getIconFromDamage(int par1)
    054    {
    055        return this.blockRef.getBlockTextureFromSideAndMetadata(0, par1);
    056    }
    057
    058    /**
    059     * Returns the unlocalized name of this item. This version accepts an ItemStack so different stacks can have
    060     * different names based on their damage or NBT.
    061     */
    062    public String getUnlocalizedName(ItemStack par1ItemStack)
    063    {
    064        if (this.blockNames == null)
    065        {
    066            return super.getUnlocalizedName(par1ItemStack);
    067        }
    068        else
    069        {
    070            int i = par1ItemStack.getItemDamage();
    071            return i >= 0 && i < this.blockNames.length ? super.getUnlocalizedName(par1ItemStack) + "." + this.blockNames[i] : super.getUnlocalizedName(par1ItemStack);
    072        }
    073    }
    074}