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 }