001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.util.Random;
006
007 public class BlockRedstoneLight extends Block
008 {
009 /** Whether this lamp block is the powered version. */
010 private final boolean powered;
011
012 public BlockRedstoneLight(int par1, boolean par2)
013 {
014 super(par1, 211, Material.redstoneLight);
015 this.powered = par2;
016
017 if (par2)
018 {
019 this.setLightValue(1.0F);
020 ++this.blockIndexInTexture;
021 }
022 }
023
024 /**
025 * Called whenever the block is added into the world. Args: world, x, y, z
026 */
027 public void onBlockAdded(World par1World, int par2, int par3, int par4)
028 {
029 if (!par1World.isRemote)
030 {
031 if (this.powered && !par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
032 {
033 par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 4);
034 }
035 else if (!this.powered && par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
036 {
037 par1World.setBlockWithNotify(par2, par3, par4, Block.redstoneLampActive.blockID);
038 }
039 }
040 }
041
042 /**
043 * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
044 * their own) Args: x, y, z, neighbor blockID
045 */
046 public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
047 {
048 if (!par1World.isRemote)
049 {
050 if (this.powered && !par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
051 {
052 par1World.scheduleBlockUpdate(par2, par3, par4, this.blockID, 4);
053 }
054 else if (!this.powered && par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
055 {
056 par1World.setBlockWithNotify(par2, par3, par4, Block.redstoneLampActive.blockID);
057 }
058 }
059 }
060
061 /**
062 * Ticks the block if it's been scheduled
063 */
064 public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random)
065 {
066 if (!par1World.isRemote && this.powered && !par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
067 {
068 par1World.setBlockWithNotify(par2, par3, par4, Block.redstoneLampIdle.blockID);
069 }
070 }
071
072 /**
073 * Returns the ID of the items to drop on destruction.
074 */
075 public int idDropped(int par1, Random par2Random, int par3)
076 {
077 return Block.redstoneLampIdle.blockID;
078 }
079
080 @SideOnly(Side.CLIENT)
081
082 /**
083 * only called by clickMiddleMouseButton , and passed to inventory.setCurrentItem (along with isCreative)
084 */
085 public int idPicked(World par1World, int par2, int par3, int par4)
086 {
087 return Block.redstoneLampIdle.blockID;
088 }
089 }