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