From 294fadb7b54882ff814827f06eb98f7f724b4f61 Mon Sep 17 00:00:00 2001 From: lcy0x1 Date: Fri, 27 Sep 2024 14:14:09 +0800 Subject: [PATCH] bug fix --- .../java/dev/xkmc/l2core/init/reg/ench/EnchVal.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/xkmc/l2core/init/reg/ench/EnchVal.java b/src/main/java/dev/xkmc/l2core/init/reg/ench/EnchVal.java index 6fba307..20a27df 100644 --- a/src/main/java/dev/xkmc/l2core/init/reg/ench/EnchVal.java +++ b/src/main/java/dev/xkmc/l2core/init/reg/ench/EnchVal.java @@ -35,16 +35,20 @@ public interface EnchVal { @DataGenOnly Holder datagenDirect(RegistrateProvider pvd); + default Optional> safeHolder() { + return Optional.ofNullable(CommonHooks.resolveLookup(Registries.ENCHANTMENT)).flatMap(e -> e.get(id())); + } + default Holder holder() { - return Optional.ofNullable(CommonHooks.resolveLookup(Registries.ENCHANTMENT)).orElseThrow().getOrThrow(id()); + return safeHolder().orElseThrow(); } default int getLv(ItemStack stack) { - return stack.getEnchantmentLevel(holder()); + return safeHolder().map(stack::getEnchantmentLevel).orElse(0); } default int getLvIntrinsic(ItemStack stack) { - return stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(holder()); + return safeHolder().map(e -> stack.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).getLevel(e)).orElse(0); } interface Impl extends EnchVal {