Skip to content

Commit 24d58a3

Browse files
committed
Let the dictionary query any attributes that are default to the stack or added by mods
1 parent e72bd3f commit 24d58a3

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/main/java/mekanism/client/gui/element/custom/GuiDictionaryTarget.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.List;
77
import java.util.Map;
88
import java.util.Set;
9+
import java.util.function.BiConsumer;
910
import java.util.function.Consumer;
1011
import java.util.stream.IntStream;
1112
import mekanism.api.chemical.ChemicalStack;
@@ -27,19 +28,22 @@
2728
import mekanism.common.base.TagCache;
2829
import mekanism.common.block.interfaces.IHasTileEntity;
2930
import mekanism.common.capabilities.Capabilities;
31+
import mekanism.common.util.EnumUtils;
3032
import net.minecraft.client.gui.GuiGraphics;
3133
import net.minecraft.client.gui.components.Tooltip;
3234
import net.minecraft.client.gui.screens.Screen;
3335
import net.minecraft.core.Holder;
3436
import net.minecraft.core.component.DataComponents;
3537
import net.minecraft.sounds.SoundEvents;
3638
import net.minecraft.world.effect.MobEffectInstance;
39+
import net.minecraft.world.entity.EquipmentSlot;
40+
import net.minecraft.world.entity.ai.attributes.Attribute;
41+
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
3742
import net.minecraft.world.item.BlockItem;
3843
import net.minecraft.world.item.Item;
3944
import net.minecraft.world.item.ItemStack;
4045
import net.minecraft.world.item.SpawnEggItem;
4146
import net.minecraft.world.item.alchemy.PotionContents;
42-
import net.minecraft.world.item.component.ItemAttributeModifiers;
4347
import net.minecraft.world.item.enchantment.ItemEnchantments;
4448
import net.minecraft.world.level.block.Block;
4549
import net.neoforged.neoforge.capabilities.ItemCapability;
@@ -161,11 +165,15 @@ public void setTargetSlot(@Nullable Object newTarget) {
161165
tags.put(DictionaryTagType.MOB_EFFECT, List.copyOf(effectTags));
162166
}
163167
//Get any attribute tags
164-
ItemAttributeModifiers modifiers = itemStack.get(DataComponents.ATTRIBUTE_MODIFIERS);
165-
if (modifiers != null && !modifiers.modifiers().isEmpty()) {
168+
Set<Holder<Attribute>> attributes = new HashSet<>();
169+
BiConsumer<Holder<Attribute>, AttributeModifier> attributeCollector = (holder, modifier) -> attributes.add(holder);
170+
for (EquipmentSlot slotType : EnumUtils.EQUIPMENT_SLOT_TYPES) {
171+
itemStack.forEachModifier(slotType, attributeCollector);
172+
}
173+
if (!attributes.isEmpty()) {
166174
//Only add them though if it has any attributes at all
167-
tags.put(DictionaryTagType.ATTRIBUTE, TagCache.getTagsAsStrings(modifiers.modifiers().stream()
168-
.flatMap(attribute -> attribute.attribute().tags())
175+
tags.put(DictionaryTagType.ATTRIBUTE, TagCache.getTagsAsStrings(attributes.stream()
176+
.flatMap(Holder::tags)
169177
.distinct()
170178
));
171179
}

0 commit comments

Comments
 (0)