package advancedsystemsmanager.flow.execution.buffers.maps; import gnu.trove.strategy.HashingStrategy; import net.minecraft.item.ItemStack; public class ItemStackHashingStrategy implements HashingStrategy<ItemStack> { @Override public int computeHashCode(ItemStack stack) { return stack.getItem().hashCode() ^ stack.getItemDamage() ^ (stack.hasTagCompound() ? stack.stackTagCompound.hashCode() : 0); } @Override public boolean equals(ItemStack stack1, ItemStack stack2) { return stack1 != null && stack1.isItemEqual(stack2) && ItemStack.areItemStackTagsEqual(stack1, stack2); } }