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