    001package net.minecraft.block;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.List;
    006import java.util.Random;
    007import net.minecraft.block.material.Material;
    008import net.minecraft.creativetab.CreativeTabs;
    009import net.minecraft.item.ItemStack;
    010
    011public class BlockWoodSlab extends BlockHalfSlab
    012{
    013    /** The type of tree this slab came from. */
    014    public static final String[] woodType = new String[] {"oak", "spruce", "birch", "jungle"};
    015
    016    public BlockWoodSlab(int par1, boolean par2)
    017    {
    018        super(par1, par2, Material.wood);
    019        this.setCreativeTab(CreativeTabs.tabBlock);
    020    }
    021
    022    /**
    023     * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata
    024     */
    025    public int getBlockTextureFromSideAndMetadata(int par1, int par2)
    026    {
    027        switch (par2 & 7)
    028        {
    029            case 1:
    030                return 198;
    031            case 2:
    032                return 214;
    033            case 3:
    034                return 199;
    035            default:
    036                return 4;
    037        }
    038    }
    039
    040    /**
    041     * Returns the block texture based on the side being looked at.  Args: side
    042     */
    043    public int getBlockTextureFromSide(int par1)
    044    {
    045        return this.getBlockTextureFromSideAndMetadata(par1, 0);
    046    }
    047
    048    /**
    049     * Returns the ID of the items to drop on destruction.
    050     */
    051    public int idDropped(int par1, Random par2Random, int par3)
    052    {
    053        return Block.woodSingleSlab.blockID;
    054    }
    055
    056    /**
    057     * Returns an item stack containing a single instance of the current block type. 'i' is the block's subtype/damage
    058     * and is ignored for blocks which do not support subtypes. Blocks which cannot be harvested should return null.
    059     */
    060    protected ItemStack createStackedBlock(int par1)
    061    {
    062        return new ItemStack(Block.woodSingleSlab.blockID, 2, par1 & 7);
    063    }
    064
    065    /**
    066     * Returns the slab block name with step type.
    067     */
    068    public String getFullSlabName(int par1)
    069    {
    070        if (par1 < 0 || par1 >= woodType.length)
    071        {
    072            par1 = 0;
    073        }
    074
    075        return super.getBlockName() + "." + woodType[par1];
    076    }
    077
    078    @SideOnly(Side.CLIENT)
    079
    080    /**
    081     * returns a list of blocks with the same ID, but different meta (eg: wood returns 4 blocks)
    082     */
    083    public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
    084    {
    085        if (par1 != Block.woodDoubleSlab.blockID)
    086        {
    087            for (int var4 = 0; var4 < 4; ++var4)
    088            {
    089                par3List.add(new ItemStack(par1, 1, var4));
    090            }
    091        }
    092    }
    093}