From e65530c311da647ee8930c5033b4467f521c7712 Mon Sep 17 00:00:00 2001 From: Shad0wlife Date: Sat, 13 Dec 2025 12:41:37 +0100 Subject: [PATCH] Get gameplay enchantment levels This fixes breaker modules which have enchantments with modified enchantment levels (Apotheosis affixes and gems for example) in them not showing the enchantment level correctly. --- .../desht/modularrouters/item/module/ModuleItem.java | 10 +++++++--- .../logic/filter/matchers/InspectionMatcher.java | 5 ++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/desht/modularrouters/item/module/ModuleItem.java b/src/main/java/me/desht/modularrouters/item/module/ModuleItem.java index c994c456..89c51da8 100644 --- a/src/main/java/me/desht/modularrouters/item/module/ModuleItem.java +++ b/src/main/java/me/desht/modularrouters/item/module/ModuleItem.java @@ -27,8 +27,10 @@ import me.desht.modularrouters.logic.settings.RedstoneBehaviour; import me.desht.modularrouters.logic.settings.RelativeDirection; import me.desht.modularrouters.util.MFLocator; + import net.minecraft.ChatFormatting; -import net.minecraft.core.component.DataComponents; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerPlayer; @@ -49,6 +51,8 @@ import net.minecraft.world.item.enchantment.ItemEnchantments; import net.minecraft.world.level.Level; +import net.neoforged.neoforge.common.CommonHooks; + import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; @@ -212,9 +216,9 @@ protected void addSettingsInformation(ItemStack stack, List list) { ItemStack pick = pickaxeUser.getPickaxe(stack); list.add(xlate("modularrouters.itemText.misc.breakerPick").withStyle(ChatFormatting.YELLOW) .append(pick.getHoverName().plainCopy().withStyle(ChatFormatting.AQUA))); - pick.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).entrySet().forEach(holder -> { + pick.getAllEnchantments(CommonHooks.resolveLookup(Registries.ENCHANTMENT)).entrySet().forEach(mapEntry -> { list.add(Component.literal("▶ ") - .append(Enchantment.getFullname(holder.getKey(), holder.getIntValue()).copy().withStyle(ChatFormatting.AQUA)) + .append(Enchantment.getFullname(mapEntry.getKey(), mapEntry.getIntValue()).copy().withStyle(ChatFormatting.AQUA)) .withStyle(ChatFormatting.YELLOW)); }); } diff --git a/src/main/java/me/desht/modularrouters/logic/filter/matchers/InspectionMatcher.java b/src/main/java/me/desht/modularrouters/logic/filter/matchers/InspectionMatcher.java index 3d977ec1..ad94d534 100644 --- a/src/main/java/me/desht/modularrouters/logic/filter/matchers/InspectionMatcher.java +++ b/src/main/java/me/desht/modularrouters/logic/filter/matchers/InspectionMatcher.java @@ -7,6 +7,8 @@ import me.desht.modularrouters.api.matching.IItemMatcher; import me.desht.modularrouters.api.matching.IModuleFlags; import me.desht.modularrouters.util.TranslatableEnum; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; import net.minecraft.core.component.DataComponents; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -16,6 +18,7 @@ import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.neoforged.neoforge.common.CommonHooks; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.energy.IEnergyStorage; import net.neoforged.neoforge.fluids.FluidUtil; @@ -170,7 +173,7 @@ private static Optional getFoodValue(ItemStack stack) { } private static Optional getHighestEnchantLevel(ItemStack stack) { - return stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).entrySet().stream() + return stack.getAllEnchantments(CommonHooks.resolveLookup(Registries.ENCHANTMENT)).entrySet().stream() .map(Object2IntMap.Entry::getIntValue) .max(Comparator.naturalOrder()); }