001package net.minecraft.block;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.block.material.Material;
006import net.minecraft.client.renderer.texture.IconRegister;
007import net.minecraft.world.IBlockAccess;
008
009public class BlockBreakable extends Block
010{
011    private boolean localFlag;
012    private String breakableBlockIcon;
013
014    protected BlockBreakable(int par1, String par2Str, Material par3Material, boolean par4)
015    {
016        super(par1, par3Material);
017        this.localFlag = par4;
018        this.breakableBlockIcon = par2Str;
019    }
020
021    /**
022     * Is this block (a) opaque and (b) a full 1m cube?  This determines whether or not to render the shared face of two
023     * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
024     */
025    public boolean isOpaqueCube()
026    {
027        return false;
028    }
029
030    @SideOnly(Side.CLIENT)
031
032    /**
033     * Returns true if the given side of this block type should be rendered, if the adjacent block is at the given
034     * coordinates.  Args: blockAccess, x, y, z, side
035     */
036    public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
037    {
038        int i1 = par1IBlockAccess.getBlockId(par2, par3, par4);
039        return !this.localFlag && i1 == this.blockID ? false : super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5);
040    }
041
042    @SideOnly(Side.CLIENT)
043
044    /**
045     * When this method is called, your block should register all the icons it needs with the given IconRegister. This
046     * is the only chance you get to register icons.
047     */
048    public void registerIcons(IconRegister par1IconRegister)
049    {
050        this.blockIcon = par1IconRegister.registerIcon(this.breakableBlockIcon);
051    }
052}