    001package net.minecraft.block;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.List;
    006import net.minecraft.block.material.Material;
    007import net.minecraft.client.renderer.texture.IconRegister;
    008import net.minecraft.creativetab.CreativeTabs;
    009import net.minecraft.item.ItemStack;
    010import net.minecraft.util.Icon;
    011
    012public class BlockCloth extends Block
    013{
    014    @SideOnly(Side.CLIENT)
    015    private Icon[] iconArray;
    016
    017    public BlockCloth()
    018    {
    019        super(35, Material.cloth);
    020        this.setCreativeTab(CreativeTabs.tabBlock);
    021    }
    022
    023    @SideOnly(Side.CLIENT)
    024
    025    /**
    026     * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
    027     */
    028    public Icon getIcon(int par1, int par2)
    029    {
    030        return this.iconArray[par2 % this.iconArray.length];
    031    }
    032
    033    /**
    034     * Determines the damage on the item the block drops. Used in cloth and wood.
    035     */
    036    public int damageDropped(int par1)
    037    {
    038        return par1;
    039    }
    040
    041    /**
    042     * Takes a dye damage value and returns the block damage value to match
    043     */
    044    public static int getBlockFromDye(int par0)
    045    {
    046        return ~par0 & 15;
    047    }
    048
    049    /**
    050     * Takes a block damage value and returns the dye damage value to match
    051     */
    052    public static int getDyeFromBlock(int par0)
    053    {
    054        return ~par0 & 15;
    055    }
    056
    057    @SideOnly(Side.CLIENT)
    058
    059    /**
    060     * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
    061     */
    062    public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
    063    {
    064        for (int j = 0; j < 16; ++j)
    065        {
    066            par3List.add(new ItemStack(par1, 1, j));
    067        }
    068    }
    069
    070    @SideOnly(Side.CLIENT)
    071
    072    /**
    073     * When this method is called, your block should register all the icons it needs with the given IconRegister. This
    074     * is the only chance you get to register icons.
    075     */
    076    public void registerIcons(IconRegister par1IconRegister)
    077    {
    078        this.iconArray = new Icon[16];
    079
    080        for (int i = 0; i < this.iconArray.length; ++i)
    081        {
    082            this.iconArray[i] = par1IconRegister.registerIcon("cloth_" + i);
    083        }
    084    }
    085}