 -        if (!par1World.isRemote)
 -        {
 -            if (par5 >= 7)
--            {
++    }
++
++    @Override 
++    public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
++    {
++        ArrayList<ItemStack> ret = super.getBlockDropped(world, x, y, z, metadata, fortune);
++
++        if (metadata >= 7)
++        {
++            for (int n = 0; n < 3 + fortune; n++)
+             {
 -                int var8 = 3 + par7;
 -
 -                for (int var9 = 0; var9 < var8; ++var9)

                     {
                         var20 = 3.0F;
                     }
@@ -158,22 +162,37 @@
     public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7)
     {
         super.dropBlockAsItemWithChance(par1World, par2, par3, par4, par5, par6, 0);

-                    {
-                        this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(this.getSeedItem(), 1, 0));
-                    }
+                if (world.rand.nextInt(15) <= metadata)
+                {
+                    ret.add(new ItemStack(this.getSeedItem(), 1, 0));
                 }
             }
         }
+
+        return ret;
     }
