From f80f623ccfadfb409653aef8e1d5e096e08c57c9 Mon Sep 17 00:00:00 2001 From: fscan Date: Fri, 20 Oct 2017 23:25:18 +0200 Subject: [PATCH] Fix AESharedItemStack#compareNBT to get consistent ordering. (#3169) --- .../java/appeng/container/AEBaseContainer.java | 2 +- .../java/appeng/util/item/AESharedItemStack.java | 14 ++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/main/java/appeng/container/AEBaseContainer.java b/src/main/java/appeng/container/AEBaseContainer.java index 3c75a0d84..3883b8c96 100644 --- a/src/main/java/appeng/container/AEBaseContainer.java +++ b/src/main/java/appeng/container/AEBaseContainer.java @@ -205,7 +205,7 @@ public abstract class AEBaseContainer extends Container final NBTTagCompound data = CompressedStreamTools.readCompressed( new ByteArrayInputStream( buffer ) ); if( data != null ) { - this.setTargetStack( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ).createStack( new ItemStack( data ) ) ); + this.setTargetStack( AEItemStack.fromNBT( data ) ); } } catch( final IOException e ) diff --git a/src/main/java/appeng/util/item/AESharedItemStack.java b/src/main/java/appeng/util/item/AESharedItemStack.java index 2014ec6fc..5f8df0937 100644 --- a/src/main/java/appeng/util/item/AESharedItemStack.java +++ b/src/main/java/appeng/util/item/AESharedItemStack.java @@ -28,7 +28,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import appeng.api.config.FuzzyMode; -import appeng.util.Platform; final class AESharedItemStack implements Comparable @@ -60,7 +59,7 @@ final class AESharedItemStack implements Comparable @Override public int hashCode() { - return Objects.hash( itemStack.getItem(), this.itemDamage ); + return Objects.hash( this.itemId, this.itemDamage, this.itemStack.hasTagCompound() ? this.itemStack.getTagCompound() : 0 ); } @Override @@ -110,11 +109,10 @@ final class AESharedItemStack implements Comparable private int compareNBT( final ItemStack b ) { - if( Platform.itemComparisons().isNbtTagEqual( this.itemStack.getTagCompound(), b.getTagCompound() ) ) + if( this.itemStack.getTagCompound() == b.getTagCompound() ) { return 0; } - if( this.itemStack.getTagCompound() == LOW_TAG || b.getTagCompound() == HIGH_TAG ) { return -1; @@ -123,14 +121,6 @@ final class AESharedItemStack implements Comparable { return 1; } - - final int nbt = ( this.itemStack.hasTagCompound() ? this.itemStack.getTagCompound().hashCode() : 0 ) - ( b.hasTagCompound() ? b.getTagCompound() - .hashCode() : 0 ); - if( nbt != 0 ) - { - return nbt; - } - return System.identityHashCode( this.itemStack.getTagCompound() ) - System.identityHashCode( b.getTagCompound() ); }