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.world.World;
008
009public 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}