    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}