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 }