EnchantmentPredicate.java
net.minecraft.advancements.criterion.EnchantmentPredicate
信息
- 全限定名:net.minecraft.advancements.criterion.EnchantmentPredicate
- 类型:public record
- 包:net.minecraft.advancements.criterion
- 源码路径:src/main/java/net/minecraft/advancements/criterion/EnchantmentPredicate.java
- 起始行号:L14
- 职责:
TODO
字段/常量
CODEC- 类型:
Codec<EnchantmentPredicate> - 修饰符:
public static final - 源码定位:
L15 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public EnchantmentPredicate(Holder<Enchantment> enchantment, MinMaxBounds.Ints level) @ L23
- 构造器名:EnchantmentPredicate
- 源码定位:L23
- 修饰符:public
参数:
- enchantment: Holder
- level: MinMaxBounds.Ints
说明:
TODO
public EnchantmentPredicate(HolderSet<Enchantment> enchantments, MinMaxBounds.Ints level) @ L27
- 构造器名:EnchantmentPredicate
- 源码定位:L27
- 修饰符:public
参数:
- enchantments: HolderSet
- level: MinMaxBounds.Ints
说明:
TODO
方法
下面的方法块按源码顺序生成。
public boolean containedIn(ItemEnchantments itemEnchantments) @ L31
- 方法名:containedIn
- 源码定位:L31
- 返回类型:boolean
- 修饰符:public
参数:
- itemEnchantments: ItemEnchantments
说明:
TODO
private boolean matchesEnchantment(ItemEnchantments itemEnchantments, Holder<Enchantment> enchantment) @ L53
- 方法名:matchesEnchantment
- 源码定位:L53
- 返回类型:boolean
- 修饰符:private
参数:
- itemEnchantments: ItemEnchantments
- enchantment: Holder
说明:
TODO
代码
public record EnchantmentPredicate(Optional<HolderSet<Enchantment>> enchantments, MinMaxBounds.Ints level) {
public static final Codec<EnchantmentPredicate> CODEC = RecordCodecBuilder.create(
i -> i.group(
RegistryCodecs.homogeneousList(Registries.ENCHANTMENT).optionalFieldOf("enchantments").forGetter(EnchantmentPredicate::enchantments),
MinMaxBounds.Ints.CODEC.optionalFieldOf("levels", MinMaxBounds.Ints.ANY).forGetter(EnchantmentPredicate::level)
)
.apply(i, EnchantmentPredicate::new)
);
public EnchantmentPredicate(Holder<Enchantment> enchantment, MinMaxBounds.Ints level) {
this(Optional.of(HolderSet.direct(enchantment)), level);
}
public EnchantmentPredicate(HolderSet<Enchantment> enchantments, MinMaxBounds.Ints level) {
this(Optional.of(enchantments), level);
}
public boolean containedIn(ItemEnchantments itemEnchantments) {
if (this.enchantments.isPresent()) {
for (Holder<Enchantment> enchantment : this.enchantments.get()) {
if (this.matchesEnchantment(itemEnchantments, enchantment)) {
return true;
}
}
return false;
} else if (this.level != MinMaxBounds.Ints.ANY) {
for (Entry<Holder<Enchantment>> entry : itemEnchantments.entrySet()) {
if (this.level.matches(entry.getIntValue())) {
return true;
}
}
return false;
} else {
return !itemEnchantments.isEmpty();
}
}
private boolean matchesEnchantment(ItemEnchantments itemEnchantments, Holder<Enchantment> enchantment) {
int level = itemEnchantments.getLevel(enchantment);
if (level == 0) {
return false;
} else {
return this.level == MinMaxBounds.Ints.ANY ? true : this.level.matches(level);
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
HolderSet.direct()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RegistryCodecs.homogeneousList()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: