    001    package net.minecraft.block;
    002
    003    import net.minecraft.block.material.Material;
    004    import net.minecraft.tileentity.TileEntity;
    005    import net.minecraft.world.World;
    006
    007    public 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    }