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
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() {
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 {