--- a/net/minecraft/server/BlockOre.java +++ b/net/minecraft/server/BlockOre.java @@ -39,6 +39,7 @@ public void dropNaturally(World world, BlockPosition blockposition, IBlockData iblockdata, float f, int i) { super.dropNaturally(world, blockposition, iblockdata, f, i); + /* CraftBukkit start - Delegated to getExpDrop if (this.getDropType(iblockdata, world.random, i) != Item.getItemOf(this)) { int j = 0; @@ -56,13 +57,42 @@ this.dropExperience(world, blockposition, j); } + // */ } + @Override + public int getExpDrop(World world, IBlockData iblockdata, int i) { + if (this.getDropType(iblockdata, world.random, i) != Item.getItemOf(this)) { + int j = 0; + + if (this == Blocks.COAL_ORE) { + j = MathHelper.nextInt(world.random, 0, 2); + } else if (this == Blocks.DIAMOND_ORE) { + j = MathHelper.nextInt(world.random, 3, 7); + } else if (this == Blocks.EMERALD_ORE) { + j = MathHelper.nextInt(world.random, 3, 7); + } else if (this == Blocks.LAPIS_ORE) { + j = MathHelper.nextInt(world.random, 2, 5); + } else if (this == Blocks.QUARTZ_ORE) { + j = MathHelper.nextInt(world.random, 2, 5); + } + + return j; + } + + return 0; + // CraftBukkit end + } + public ItemStack a(World world, BlockPosition blockposition, IBlockData iblockdata) { return new ItemStack(this); } + public int getDropData(World world, BlockPosition blockposition) { + return 0; + } + public int getDropData(IBlockData iblockdata) { return this == Blocks.LAPIS_ORE ? EnumColor.BLUE.getInvColorIndex() : 0; }