From a565486ee1aa93166b7aaa4c22ca76be15f4f2ab Mon Sep 17 00:00:00 2001
From: t00thpick1 <t00thpick1dirko@gmail.com>
Date: Thu, 12 Dec 2013 12:40:42 -0500
Subject: [PATCH] [Bleeding] Return correct drops for Cocoa blocks. Fixes
 BUKKIT-5159

For Cocoa Blocks, Block.getDropType() returns the item form of the Cocoa
block, rather than the Cocoa Bean item. Because of this, Cocoa blocks need
to have explicit handling in order to return the proper drop contents.
---
 src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index 3b5e938db7..5fc334a921 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -6,6 +6,7 @@ import java.util.Collections;
 import java.util.List;
 
 import net.minecraft.server.BiomeBase;
+import net.minecraft.server.BlockCocoa;
 import net.minecraft.server.BlockRedstoneWire;
 import net.minecraft.server.Blocks;
 import net.minecraft.server.EnumSkyBlock;
@@ -428,6 +429,12 @@ public class CraftBlock implements Block {
                         }
 
                         drops.add(CraftItemStack.asBukkitCopy(nmsStack));
+                        // We don't want to drop cocoa blocks, we want to drop cocoa beans.
+                    } else if (Blocks.COCOA == block) {
+                        int dropAmount = (BlockCocoa.c(data) >= 2 ? 3 : 1);
+                        for (int j = 0; j < dropAmount; ++j) {
+                            drops.add(new ItemStack(Material.INK_SACK, 1, (short) 3));
+                        }
                     } else {
                         drops.add(new ItemStack(org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(item), 1, (short) block.getDropData(data)));
                     }