001    package net.minecraft.src;
002    
003    public class BlockCommandBlock extends BlockContainer
004    {
005        public BlockCommandBlock(int par1)
006        {
007            super(par1, 184, Material.iron);
008        }
009    
010        /**
011         * Returns a new instance of a block's tile entity class. Called on placing the block.
012         */
013        public TileEntity createNewTileEntity(World par1World)
014        {
015            return new TileEntityCommandBlock();
016        }
017    
018        /**
019         * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
020         * their own) Args: x, y, z, neighbor blockID
021         */
022        public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
023        {
024            if (!par1World.isRemote)
025            {
026                boolean var6 = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4);
027                int var7 = par1World.getBlockMetadata(par2, par3, par4);
028                boolean var8 = (var7 & 1) != 0;
029    
030                if (var6 && !var8)
031                {
032                    TileEntity var9 = par1World.getBlockTileEntity(par2, par3, par4);
033    
034                    if (var9 != null && var9 instanceof TileEntityCommandBlock)
035                    {
036                        ((TileEntityCommandBlock)var9).executeCommandOnPowered(par1World);
037                    }
038    
039                    par1World.setBlockMetadata(par2, par3, par4, var7 | 1);
040                }
041                else if (!var6 && var8)
042                {
043                    par1World.setBlockMetadata(par2, par3, par4, var7 & -2);
044                }
045            }
046        }
047    
048        /**
049         * Called upon block activation (right click on the block.)
050         */
051        public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
052        {
053            TileEntityCommandBlock var10 = (TileEntityCommandBlock)par1World.getBlockTileEntity(par2, par3, par4);
054    
055            if (var10 != null)
056            {
057                par5EntityPlayer.displayGUIEditSign(var10);
058            }
059    
060            return true;
061        }
062    }