CollectionPredicate.java
net.minecraft.advancements.criterion.CollectionPredicate
信息
- 全限定名:net.minecraft.advancements.criterion.CollectionPredicate
- 类型:public record
- 包:net.minecraft.advancements.criterion
- 源码路径:src/main/java/net/minecraft/advancements/criterion/CollectionPredicate.java
- 起始行号:L9
- 实现:Predicate<Iterable<?extends T>>
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static <T,P extends Predicate<T>> Codec<CollectionPredicate<T,P>> codec(Codec<P> elementCodec) @ L12
- 方法名:codec
- 源码定位:L12
- 返回类型:<T,P extends Predicate
> Codec<CollectionPredicate<T,P>> - 修饰符:public static
参数:
- elementCodec: Codec
说明:
TODO
public boolean test(Iterable<?extends T> value) @ L23
- 方法名:test
- 源码定位:L23
- 返回类型:boolean
- 修饰符:public
参数:
- value: Iterable<?extends T>
说明:
TODO
代码
public record CollectionPredicate<T, P extends Predicate<T>>(
Optional<CollectionContentsPredicate<T, P>> contains, Optional<CollectionCountsPredicate<T, P>> counts, Optional<MinMaxBounds.Ints> size
) implements Predicate<Iterable<? extends T>> {
public static <T, P extends Predicate<T>> Codec<CollectionPredicate<T, P>> codec(Codec<P> elementCodec) {
return RecordCodecBuilder.create(
i -> i.group(
CollectionContentsPredicate.<T, P>codec(elementCodec).optionalFieldOf("contains").forGetter(CollectionPredicate::contains),
CollectionCountsPredicate.<T, P>codec(elementCodec).optionalFieldOf("count").forGetter(CollectionPredicate::counts),
MinMaxBounds.Ints.CODEC.optionalFieldOf("size").forGetter(CollectionPredicate::size)
)
.apply(i, CollectionPredicate::new)
);
}
public boolean test(Iterable<? extends T> value) {
if (this.contains.isPresent() && !this.contains.get().test(value)) {
return false;
} else {
return this.counts.isPresent() && !this.counts.get().test(value) ? false : !this.size.isPresent() || this.size.get().matches(Iterables.size(value));
}
}
}引用的其他类
- 无