001    package net.minecraft.src;
002    
003    import java.util.Random;
004    
005    public class BlockOre extends Block
006    {
007        public BlockOre(int par1, int par2)
008        {
009            super(par1, par2, Material.rock);
010            this.setCreativeTab(CreativeTabs.tabBlock);
011        }
012    
013        /**
014         * Returns the ID of the items to drop on destruction.
015         */
016        public int idDropped(int par1, Random par2Random, int par3)
017        {
018            return this.blockID == Block.oreCoal.blockID ? Item.coal.shiftedIndex : (this.blockID == Block.oreDiamond.blockID ? Item.diamond.shiftedIndex : (this.blockID == Block.oreLapis.blockID ? Item.dyePowder.shiftedIndex : (this.blockID == Block.oreEmerald.blockID ? Item.emerald.shiftedIndex : this.blockID)));
019        }
020    
021        /**
022         * Returns the quantity of items to drop on block destruction.
023         */
024        public int quantityDropped(Random par1Random)
025        {
026            return this.blockID == Block.oreLapis.blockID ? 4 + par1Random.nextInt(5) : 1;
027        }
028    
029        /**
030         * Returns the usual quantity dropped by the block plus a bonus of 1 to 'i' (inclusive).
031         */
032        public int quantityDroppedWithBonus(int par1, Random par2Random)
033        {
034            if (par1 > 0 && this.blockID != this.idDropped(0, par2Random, par1))
035            {
036                int var3 = par2Random.nextInt(par1 + 2) - 1;
037    
038                if (var3 < 0)
039                {
040                    var3 = 0;
041                }
042    
043                return this.quantityDropped(par2Random) * (var3 + 1);
044            }
045            else
046            {
047                return this.quantityDropped(par2Random);
048            }
049        }
050    
051        /**
052         * Drops the block items with a specified chance of dropping the specified items
053         */
054        public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7)
055        {
056            super.dropBlockAsItemWithChance(par1World, par2, par3, par4, par5, par6, par7);
057    
058            if (this.idDropped(par5, par1World.rand, par7) != this.blockID)
059            {
060                int var8 = 0;
061    
062                if (this.blockID == Block.oreCoal.blockID)
063                {
064                    var8 = MathHelper.getRandomIntegerInRange(par1World.rand, 0, 2);
065                }
066                else if (this.blockID == Block.oreDiamond.blockID)
067                {
068                    var8 = MathHelper.getRandomIntegerInRange(par1World.rand, 3, 7);
069                }
070                else if (this.blockID == Block.oreEmerald.blockID)
071                {
072                    var8 = MathHelper.getRandomIntegerInRange(par1World.rand, 3, 7);
073                }
074                else if (this.blockID == Block.oreLapis.blockID)
075                {
076                    var8 = MathHelper.getRandomIntegerInRange(par1World.rand, 2, 5);
077                }
078    
079                this.dropXpOnBlockBreak(par1World, par2, par3, par4, var8);
080            }
081        }
082    
083        /**
084         * Determines the damage on the item the block drops. Used in cloth and wood.
085         */
086        protected int damageDropped(int par1)
087        {
088            return this.blockID == Block.oreLapis.blockID ? 4 : 0;
089        }
090    }