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