EntityEquipmentPredicate.java
net.minecraft.advancements.criterion.EntityEquipmentPredicate
信息
- 全限定名:net.minecraft.advancements.criterion.EntityEquipmentPredicate
- 类型:public record
- 包:net.minecraft.advancements.criterion
- 源码路径:src/main/java/net/minecraft/advancements/criterion/EntityEquipmentPredicate.java
- 起始行号:L19
- 职责:
TODO
字段/常量
CODEC- 类型:
Codec<EntityEquipmentPredicate> - 修饰符:
public static final - 源码定位:
L28 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.advancements.criterion.EntityEquipmentPredicate.Builder- 类型:
class - 修饰符:
public static - 源码定位:
L81 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static EntityEquipmentPredicate captainPredicate(HolderGetter<Item> items, HolderGetter<BannerPattern> patternGetter) @ L41
- 方法名:captainPredicate
- 源码定位:L41
- 返回类型:EntityEquipmentPredicate
- 修饰符:public static
参数:
- items: HolderGetter
- patternGetter: HolderGetter
说明:
TODO
public boolean matches(Entity entity) @ L59
- 方法名:matches
- 源码定位:L59
- 返回类型:boolean
- 修饰符:public
参数:
- entity: Entity
说明:
TODO
代码
public record EntityEquipmentPredicate(
Optional<ItemPredicate> head,
Optional<ItemPredicate> chest,
Optional<ItemPredicate> legs,
Optional<ItemPredicate> feet,
Optional<ItemPredicate> body,
Optional<ItemPredicate> mainhand,
Optional<ItemPredicate> offhand
) {
public static final Codec<EntityEquipmentPredicate> CODEC = RecordCodecBuilder.create(
i -> i.group(
ItemPredicate.CODEC.optionalFieldOf("head").forGetter(EntityEquipmentPredicate::head),
ItemPredicate.CODEC.optionalFieldOf("chest").forGetter(EntityEquipmentPredicate::chest),
ItemPredicate.CODEC.optionalFieldOf("legs").forGetter(EntityEquipmentPredicate::legs),
ItemPredicate.CODEC.optionalFieldOf("feet").forGetter(EntityEquipmentPredicate::feet),
ItemPredicate.CODEC.optionalFieldOf("body").forGetter(EntityEquipmentPredicate::body),
ItemPredicate.CODEC.optionalFieldOf("mainhand").forGetter(EntityEquipmentPredicate::mainhand),
ItemPredicate.CODEC.optionalFieldOf("offhand").forGetter(EntityEquipmentPredicate::offhand)
)
.apply(i, EntityEquipmentPredicate::new)
);
public static EntityEquipmentPredicate captainPredicate(HolderGetter<Item> items, HolderGetter<BannerPattern> patternGetter) {
return EntityEquipmentPredicate.Builder.equipment()
.head(
ItemPredicate.Builder.item()
.of(items, Items.WHITE_BANNER)
.withComponents(
DataComponentMatchers.Builder.components()
.exact(
DataComponentExactPredicate.someOf(
Raid.getBannerComponentPatch(patternGetter).split().added(), DataComponents.BANNER_PATTERNS, DataComponents.ITEM_NAME
)
)
.build()
)
)
.build();
}
public boolean matches(@Nullable Entity entity) {
if (entity instanceof LivingEntity livingEntity) {
if (this.head.isPresent() && !this.head.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.HEAD))) {
return false;
} else if (this.chest.isPresent() && !this.chest.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.CHEST))) {
return false;
} else if (this.legs.isPresent() && !this.legs.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.LEGS))) {
return false;
} else if (this.feet.isPresent() && !this.feet.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.FEET))) {
return false;
} else if (this.body.isPresent() && !this.body.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.BODY))) {
return false;
} else {
return this.mainhand.isPresent() && !this.mainhand.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.MAINHAND))
? false
: !this.offhand.isPresent() || this.offhand.get().test((ItemInstance)livingEntity.getItemBySlot(EquipmentSlot.OFFHAND));
}
} else {
return false;
}
}
public static class Builder {
private Optional<ItemPredicate> head = Optional.empty();
private Optional<ItemPredicate> chest = Optional.empty();
private Optional<ItemPredicate> legs = Optional.empty();
private Optional<ItemPredicate> feet = Optional.empty();
private Optional<ItemPredicate> body = Optional.empty();
private Optional<ItemPredicate> mainhand = Optional.empty();
private Optional<ItemPredicate> offhand = Optional.empty();
public static EntityEquipmentPredicate.Builder equipment() {
return new EntityEquipmentPredicate.Builder();
}
public EntityEquipmentPredicate.Builder head(ItemPredicate.Builder head) {
this.head = Optional.of(head.build());
return this;
}
public EntityEquipmentPredicate.Builder chest(ItemPredicate.Builder chest) {
this.chest = Optional.of(chest.build());
return this;
}
public EntityEquipmentPredicate.Builder legs(ItemPredicate.Builder legs) {
this.legs = Optional.of(legs.build());
return this;
}
public EntityEquipmentPredicate.Builder feet(ItemPredicate.Builder feet) {
this.feet = Optional.of(feet.build());
return this;
}
public EntityEquipmentPredicate.Builder body(ItemPredicate.Builder body) {
this.body = Optional.of(body.build());
return this;
}
public EntityEquipmentPredicate.Builder mainhand(ItemPredicate.Builder mainhand) {
this.mainhand = Optional.of(mainhand.build());
return this;
}
public EntityEquipmentPredicate.Builder offhand(ItemPredicate.Builder offhand) {
this.offhand = Optional.of(offhand.build());
return this;
}
public EntityEquipmentPredicate build() {
return new EntityEquipmentPredicate(this.head, this.chest, this.legs, this.feet, this.body, this.mainhand, this.offhand);
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
DataComponentMatchers.Builder.components()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ItemPredicate.Builder.item()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
DataComponentExactPredicate.someOf()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Raid.getBannerComponentPatch()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: