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