      }
  
      public final void dropBlockAsItem(World world, int i, int j, int k, int l)
-@@ -529,6 +523,86 @@
+@@ -249,7 +250,7 @@
+         {
+             return;
+         }
+-        int i1 = quantityDropped(world.rand);
++        int i1 = quantityDropped(l,world.rand);
+         for(int j1 = 0; j1 < i1; j1++)
+         {
+             if(world.rand.nextFloat() > f)
+@@ -529,6 +530,86 @@
          return blockMaterial.getMaterialMobility();
      }
  

     }
 
     public final void dropBlockAsItem(World world, int i, int j, int k, int l)
@@ -618,6 +614,86 @@
         return iblockaccess.isBlockNormalCube(i, j, k) ? 0.2F : 1.0F;
     }
 

     }
 
     public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l)
@@ -278,24 +281,24 @@
         return 1;
     }
 
+    /* FORGE: Metadata-sensitive version.
+     */
+    public int quantityDropped(int i, Random random)
+    {
+        return quantityDropped(random);
+    }
+
     public int idDropped(int i, Random random)
     {
         return blockID;
     }
 
