This commit is contained in:
lcy0x1
2024-09-27 14:14:09 +08:00
parent b60e4492cf
commit 294fadb7b5

View File

@@ -35,16 +35,20 @@ public interface EnchVal {
@DataGenOnly @DataGenOnly
Holder<Enchantment> datagenDirect(RegistrateProvider pvd); Holder<Enchantment> datagenDirect(RegistrateProvider pvd);
default Optional<Holder<Enchantment>> safeHolder() {
return Optional.ofNullable(CommonHooks.resolveLookup(Registries.ENCHANTMENT)).flatMap(e -> e.get(id()));
}
default Holder<Enchantment> holder() { default Holder<Enchantment> holder() {
return Optional.ofNullable(CommonHooks.resolveLookup(Registries.ENCHANTMENT)).orElseThrow().getOrThrow(id()); return safeHolder().orElseThrow();
} }
default int getLv(ItemStack stack) { default int getLv(ItemStack stack) {
return stack.getEnchantmentLevel(holder()); return safeHolder().map(stack::getEnchantmentLevel).orElse(0);
} }
default int getLvIntrinsic(ItemStack stack) { 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 { interface Impl extends EnchVal {