From 17cbbd436b61220929c974ce9c740a55a49f99cd Mon Sep 17 00:00:00 2001 From: Technici4n <13494793+Technici4n@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:08:00 +0200 Subject: [PATCH] Fix inconsistent ordering of item attribute modifiers by using a linked hashmap (#2380) --- .../java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java index 570236465..eb88e7380 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java @@ -18,7 +18,7 @@ package net.fabricmc.fabric.mixin.item; import java.util.function.Consumer; -import com.google.common.collect.HashMultimap; +import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -83,8 +83,8 @@ public abstract class ItemStackMixin { ) public Multimap<EntityAttribute, EntityAttributeModifier> hookGetAttributeModifiers(Item item, EquipmentSlot slot) { ItemStack stack = (ItemStack) (Object) this; - //we need to ensure it is modifiable for the callback - Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers = HashMultimap.create(item.getAttributeModifiers(stack, slot)); + //we need to ensure it is modifiable for the callback, use linked map to preserve ordering + Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers = LinkedHashMultimap.create(item.getAttributeModifiers(stack, slot)); ModifyItemAttributeModifiersCallback.EVENT.invoker().modifyAttributeModifiers(stack, slot, attributeModifiers); return attributeModifiers; }