ItemPredicate.java
net.minecraft.advancements.criterion.ItemPredicate
信息
- 全限定名:net.minecraft.advancements.criterion.ItemPredicate
- 类型:public record
- 包:net.minecraft.advancements.criterion
- 源码路径:src/main/java/net/minecraft/advancements/criterion/ItemPredicate.java
- 起始行号:L17
- 实现:Predicate
- 职责:
TODO
字段/常量
CODEC- 类型:
Codec<ItemPredicate> - 修饰符:
public static final - 源码定位:
L18 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.advancements.criterion.ItemPredicate.Builder- 类型:
class - 修饰符:
public static - 源码定位:
L35 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public boolean test(ItemInstance itemStack) @ L27
- 方法名:test
- 源码定位:L27
- 返回类型:boolean
- 修饰符:public
参数:
- itemStack: ItemInstance
说明:
TODO
代码
public record ItemPredicate(Optional<HolderSet<Item>> items, MinMaxBounds.Ints count, DataComponentMatchers components) implements Predicate<ItemInstance> {
public static final Codec<ItemPredicate> CODEC = RecordCodecBuilder.create(
i -> i.group(
RegistryCodecs.homogeneousList(Registries.ITEM).optionalFieldOf("items").forGetter(ItemPredicate::items),
MinMaxBounds.Ints.CODEC.optionalFieldOf("count", MinMaxBounds.Ints.ANY).forGetter(ItemPredicate::count),
DataComponentMatchers.CODEC.forGetter(ItemPredicate::components)
)
.apply(i, ItemPredicate::new)
);
public boolean test(ItemInstance itemStack) {
if (this.items.isPresent() && !itemStack.is(this.items.get())) {
return false;
} else {
return !this.count.matches(itemStack.count()) ? false : this.components.test((DataComponentGetter)itemStack);
}
}
public static class Builder {
private Optional<HolderSet<Item>> items = Optional.empty();
private MinMaxBounds.Ints count = MinMaxBounds.Ints.ANY;
private DataComponentMatchers components = DataComponentMatchers.ANY;
public static ItemPredicate.Builder item() {
return new ItemPredicate.Builder();
}
public ItemPredicate.Builder of(HolderGetter<Item> lookup, ItemLike... items) {
this.items = Optional.of(HolderSet.direct(i -> i.asItem().builtInRegistryHolder(), items));
return this;
}
public ItemPredicate.Builder of(HolderGetter<Item> lookup, TagKey<Item> tag) {
this.items = Optional.of(lookup.getOrThrow(tag));
return this;
}
public ItemPredicate.Builder withCount(MinMaxBounds.Ints count) {
this.count = count;
return this;
}
public ItemPredicate.Builder withComponents(DataComponentMatchers components) {
this.components = components;
return this;
}
public ItemPredicate build() {
return new ItemPredicate(this.items, this.count, this.components);
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
HolderSet.direct()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RegistryCodecs.homogeneousList()
- 引用位置:
-
- 引用位置:
参数/实现
- 引用位置: