From 28c458fb61add9687cc5664b9b3f0cb01b5f7550 Mon Sep 17 00:00:00 2001 From: shartte Date: Tue, 1 Sep 2020 22:48:07 +0200 Subject: [PATCH] Backport fixes for #4675 and #4665 to 1.15 (#4676) * Serialize the complete NBT data to avoid mismatches (#4665) This might increase the network traffic a bit, but the amount of mods actually using the share tag seems to be very limited. For now it is worth the risk as it solves the problem. In case we run into actual issues, there might still be other solutions, which will be way more complex and can potentially introduce additional problems. (cherry picked from commit e90dd2f9c6f1cd8b1ce271368f79f1f37df5bdce) (cherry picked from commit ab393b0ed1ef9e17ffb97e5de31f4db7a12395ea) * Fixes #4669: Take NBT into account for comparing. (#4675) This only covers combining different items together. Fuzzy filtering is still a bit too fuzzy for corner cases. Co-authored-by: yueh --- src/main/java/appeng/util/item/AEItemStack.java | 2 +- src/main/java/appeng/util/item/AESharedItemStack.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/appeng/util/item/AEItemStack.java b/src/main/java/appeng/util/item/AEItemStack.java index e427cac7b..2ac25585f 100644 --- a/src/main/java/appeng/util/item/AEItemStack.java +++ b/src/main/java/appeng/util/item/AEItemStack.java @@ -125,7 +125,7 @@ public final class AEItemStack extends AEStack implements IAEItemS buffer.writeBoolean(this.isCraftable()); buffer.writeVarLong(this.getStackSize()); buffer.writeVarLong(this.getCountRequestable()); - buffer.writeItemStack(getDefinition()); + buffer.writeItemStack(getDefinition(), false); } @Override diff --git a/src/main/java/appeng/util/item/AESharedItemStack.java b/src/main/java/appeng/util/item/AESharedItemStack.java index 9e5f2c8ee..0b587ad02 100644 --- a/src/main/java/appeng/util/item/AESharedItemStack.java +++ b/src/main/java/appeng/util/item/AESharedItemStack.java @@ -29,6 +29,7 @@ import net.minecraft.nbt.CompoundNBT; import appeng.api.config.FuzzyMode; final class AESharedItemStack implements Comparable { + private final ItemStack itemStack; private final int itemId; private final int itemDamage; @@ -97,7 +98,8 @@ final class AESharedItemStack implements Comparable { return damageValue; } - return 0; + return System.identityHashCode(this.getDefinition().getTag()) + - System.identityHashCode(b.getDefinition().getTag()); } private int makeHashCode() { @@ -183,4 +185,5 @@ final class AESharedItemStack implements Comparable { } } + }