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