From 725ae4df166d45a2fc66b9756831dfb76b264b94 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 23 Dec 2012 17:51:07 +1100 Subject: [PATCH 04/15] Update item merge logic --- src/main/java/net/minecraft/server/World.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 263cbd3..6e9b13d 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -927,6 +927,7 @@ public abstract class World implements IBlockAccess { event = CraftEventFactory.callItemSpawnEvent((EntityItem) entity); // Spigot start ItemStack item = ((EntityItem) entity).getItemStack(); + org.bukkit.craftbukkit.inventory.CraftItemStack craft = org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(item); int maxSize = item.getMaxStackSize(); if (item.count < maxSize) { double radius = this.getWorld().itemMergeRadius; @@ -936,14 +937,12 @@ public abstract class World implements IBlockAccess { if (e instanceof EntityItem) { EntityItem loopItem = (EntityItem) e; ItemStack loopStack = loopItem.getItemStack(); - if (!loopItem.dead && loopStack.id == item.id && loopStack.getData() == item.getData()) { - if (loopStack.tag == null || item.tag == null || !loopStack.tag.equals(item.tag)) { - int toAdd = Math.min(loopStack.count, maxSize - item.count); - item.count += toAdd; - loopStack.count -= toAdd; - if (loopStack.count <= 0) { - loopItem.die(); - } + if (!loopItem.dead && craft.isSimilar(org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(loopStack))) { + int toAdd = Math.min(loopStack.count, maxSize - item.count); + item.count += toAdd; + loopStack.count -= toAdd; + if (loopStack.count <= 0) { + loopItem.die(); } } } -- 1.8.1-rc2