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 }