From ef3fbf3cf894092656dde13d03e6af2c5805ca9d Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Wed, 13 Jul 2016 14:48:12 +0200 Subject: [PATCH] Better compare NBT --- .../refinedstorage/RefinedStorageUtils.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/refinedstorage/RefinedStorageUtils.java b/src/main/java/refinedstorage/RefinedStorageUtils.java index 55c0cce08..b81a77c81 100755 --- a/src/main/java/refinedstorage/RefinedStorageUtils.java +++ b/src/main/java/refinedstorage/RefinedStorageUtils.java @@ -112,6 +112,10 @@ public final class RefinedStorageUtils { return false; } + if (left.getItem() != right.getItem()) { + return false; + } + if ((flags & CompareFlags.COMPARE_DAMAGE) == CompareFlags.COMPARE_DAMAGE) { if (left.getMetadata() != right.getMetadata()) { return false; @@ -119,7 +123,7 @@ public final class RefinedStorageUtils { } if ((flags & CompareFlags.COMPARE_NBT) == CompareFlags.COMPARE_NBT) { - if (!ItemStack.areItemStackTagsEqual(left, right)) { + if (!compareNbt(left, right)) { return false; } } @@ -130,7 +134,21 @@ public final class RefinedStorageUtils { } } - return left.getItem() == right.getItem(); + return true; + } + + public static boolean compareNbt(ItemStack left, ItemStack right) { + if (!ItemStack.areItemStackTagsEqual(left, right)) { + if (left.hasTagCompound() && !right.hasTagCompound() && left.getTagCompound().hasNoTags()) { + return true; + } else if (!left.hasTagCompound() && right.hasTagCompound() && right.getTagCompound().hasNoTags()) { + return true; + } + + return false; + } + + return true; } public static boolean compareStackNoQuantity(ItemStack left, ItemStack right) {