package net.minecraft.item;

import com.google.common.base.Function;
import net.minecraft.block.Block;

public class ItemMultiTexture extends ItemBlock
{
    protected final Block theBlock;
    protected final Function nameFunction;
    private static final String __OBFID = "CL_00000051";

    public ItemMultiTexture(Block p_i45784_1_, Block p_i45784_2_, Function p_i45784_3_)
    {
        super(p_i45784_1_);
        this.theBlock = p_i45784_2_;
        this.nameFunction = p_i45784_3_;
        this.setMaxDamage(0);
        this.setHasSubtypes(true);
    }

    public ItemMultiTexture(Block p_i45346_1_, Block p_i45346_2_, final String[] p_i45346_3_)
    {
        this(p_i45346_1_, p_i45346_2_, new Function()
        {
            private static final String __OBFID = "CL_00002161";
            public String apply(ItemStack p_179541_1_)
            {
                int i = p_179541_1_.getMetadata();

                if (i < 0 || i >= p_i45346_3_.length)
                {
                    i = 0;
                }

                return p_i45346_3_[i];
            }
            public Object apply(Object p_apply_1_)
            {
                return this.apply((ItemStack)p_apply_1_);
            }
        });
    }

    /**
     * Converts the given ItemStack damage value into a metadata value to be placed in the world when this Item is
     * placed as a Block (mostly used with ItemBlocks).
     */
    public int getMetadata(int damage)
    {
        return damage;
    }

    /**
     * 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.
     */
    public String getUnlocalizedName(ItemStack stack)
    {
        return super.getUnlocalizedName() + "." + (String)this.nameFunction.apply(stack);
    }
}