    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    }