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