PaperMC/CraftBukkit-Patches/0004-Update-item-merge-logic.patch
Benjamin James Harrison-Sims 49fd03bf60 Update to 1.5.1
2013-03-20 22:13:12 +00:00

45 lines
2.5 KiB
Diff

From fb269cb8e23a35d6356ea849600768b7d137adbd Mon Sep 17 00:00:00 2001
From: md_5 <md_5@bigpond.com>
Date: Sun, 23 Dec 2012 17:51:07 +1100
Subject: [PATCH] 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 134ab73..d78d948 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -948,6 +948,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;
@@ -957,14 +958,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.2