From c2fce448c72bfca9a54a9fdd377063af056caa18 Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Sun, 12 Dec 2021 14:01:22 -0800 Subject: [PATCH] Ugly fix for wildcard meta; will degrade back to a linked list or a tree. Proper fix might be re-implementing ItemStackMap that fully implements the Map interface. --- .../hodgepodge/core/util/ItemStackHashingStrategy.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/mitchej123/hodgepodge/core/util/ItemStackHashingStrategy.java b/src/main/java/com/mitchej123/hodgepodge/core/util/ItemStackHashingStrategy.java index 943d7892..76b26fb9 100644 --- a/src/main/java/com/mitchej123/hodgepodge/core/util/ItemStackHashingStrategy.java +++ b/src/main/java/com/mitchej123/hodgepodge/core/util/ItemStackHashingStrategy.java @@ -14,11 +14,14 @@ public class ItemStackHashingStrategy implements HashingStrategy { @Override public int computeHashCode(ItemStack stack) { - return stack.getItem().hashCode() ^ (stack.getItemDamage() * 31) ^ (stack.hasTagCompound() ? stack.stackTagCompound.hashCode() : 0); + // Purposely allowing meta to collide (stupid wildcard), and resolving via equals + return stack.getItem().hashCode()*31; } @Override public boolean equals(ItemStack stack1, ItemStack stack2) { - return stack1 != null && stack1.isItemEqual(stack2) && ItemStack.areItemStackTagsEqual(stack1, stack2); + if (stack1 == null || stack2 == null) return false; + return stack1.getItem() == stack2.getItem() && + (stack1.getItemDamage() == stack2.getItemDamage() || stack2.getItemDamage() == Short.MAX_VALUE || stack1.getItemDamage() == Short.MAX_VALUE); } }