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 }