001package net.minecraft.block;
002
003import net.minecraft.block.material.Material;
004import net.minecraft.tileentity.TileEntity;
005import net.minecraft.world.World;
006
007public abstract class BlockContainer extends Block
008{
009    protected BlockContainer(int par1, Material par2Material)
010    {
011        super(par1, par2Material);
012        this.isBlockContainer = true;
013    }
014
015    protected BlockContainer(int par1, int par2, Material par3Material)
016    {
017        super(par1, par2, par3Material);
018        this.isBlockContainer = true;
019    }
020
021    /**
022     * Called whenever the block is added into the world. Args: world, x, y, z
023     */
024    public void onBlockAdded(World par1World, int par2, int par3, int par4)
025    {
026        super.onBlockAdded(par1World, par2, par3, par4);
027        par1World.setBlockTileEntity(par2, par3, par4, this.createTileEntity(par1World, par1World.getBlockMetadata(par2, par3, par4)));
028    }
029
030    /**
031     * ejects contained items into the world, and notifies neighbours of an update, as appropriate
032     */
033    public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6)
034    {
035        super.breakBlock(par1World, par2, par3, par4, par5, par6);
036        par1World.removeBlockTileEntity(par2, par3, par4);
037    }
038
039    /**
040     * Returns a new instance of a block's tile entity class. Called on placing the block.
041     */
042    public abstract TileEntity createNewTileEntity(World var1);
043    
044
045    public TileEntity createNewTileEntity(World world, int metadata)
046    {
047        return createNewTileEntity(world);
048    }
049
050    /**
051     * Called when the block receives a BlockEvent - see World.addBlockEvent. By default, passes it on to the tile
052     * entity at this location. Args: world, x, y, z, blockID, EventID, event parameter
053     */
054    public void onBlockEventReceived(World par1World, int par2, int par3, int par4, int par5, int par6)
055    {
056        super.onBlockEventReceived(par1World, par2, par3, par4, par5, par6);
057        TileEntity var7 = par1World.getBlockTileEntity(par2, par3, par4);
058
059        if (var7 != null)
060        {
061            var7.receiveClientEvent(par5, par6);
062        }
063    }
064}