diff --git a/nms-patches/EntityItem.patch b/nms-patches/EntityItem.patch
index bcc5bdca26..dc98445689 100644
--- a/nms-patches/EntityItem.patch
+++ b/nms-patches/EntityItem.patch
@@ -66,7 +66,15 @@
                  this.die();
              }
  
-@@ -183,6 +202,11 @@
+@@ -137,6 +156,7 @@
+                     } else if (itemstack1.count + itemstack.count > itemstack1.getMaxStackSize()) {
+                         return false;
+                     } else {
++                        if (org.bukkit.craftbukkit.event.CraftEventFactory.callItemMergeEvent(this, entityitem).isCancelled()) return false; // CraftBukkit
+                         itemstack1.count += itemstack.count;
+                         entityitem.pickupDelay = Math.max(entityitem.pickupDelay, this.pickupDelay);
+                         entityitem.age = Math.min(entityitem.age, this.age);
+@@ -183,6 +203,11 @@
          } else if (this.getItemStack() != null && this.getItemStack().getItem() == Items.NETHER_STAR && damagesource.isExplosion()) {
              return false;
          } else {
@@ -78,7 +86,7 @@
              this.ac();
              this.e = (int) ((float) this.e - f);
              if (this.e <= 0) {
-@@ -228,7 +252,18 @@
+@@ -228,7 +253,18 @@
  
          NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Item");
  
@@ -98,7 +106,7 @@
          if (this.getItemStack() == null) {
              this.die();
          }
-@@ -240,6 +275,26 @@
+@@ -240,6 +276,26 @@
              ItemStack itemstack = this.getItemStack();
              int i = itemstack.count;
  
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 10ac9590cd..2a010057ce 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -300,6 +300,19 @@ public class CraftEventFactory {
         return event;
     }
 
+    /**
+     * ItemMergeEvent
+     */
+    public static ItemMergeEvent callItemMergeEvent(EntityItem merging, EntityItem mergingWith) {
+        org.bukkit.entity.Item entityMerging = (org.bukkit.entity.Item) merging.getBukkitEntity();
+        org.bukkit.entity.Item entityMergingWith = (org.bukkit.entity.Item) mergingWith.getBukkitEntity();
+
+        ItemMergeEvent event = new ItemMergeEvent(entityMerging, entityMergingWith);
+
+        Bukkit.getPluginManager().callEvent(event);
+        return event;
+    }
+
     /**
      * PotionSplashEvent
      */