AttributeModifiersPredicate.java
net.minecraft.core.component.predicates.AttributeModifiersPredicate
信息
- 全限定名:net.minecraft.core.component.predicates.AttributeModifiersPredicate
- 类型:public record
- 包:net.minecraft.core.component.predicates
- 源码路径:src/main/java/net/minecraft/core/component/predicates/AttributeModifiersPredicate.java
- 起始行号:L21
- 实现:SingleComponentItemPredicate
- 职责:
TODO
字段/常量
CODEC- 类型:
Codec<AttributeModifiersPredicate> - 修饰符:
public static final - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.core.component.predicates.AttributeModifiersPredicate.EntryPredicate- 类型:
record - 修饰符:
public - 源码定位:
L43 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public DataComponentType<ItemAttributeModifiers> componentType() @ L34
- 方法名:componentType
- 源码定位:L34
- 返回类型:DataComponentType
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean matches(ItemAttributeModifiers value) @ L39
- 方法名:matches
- 源码定位:L39
- 返回类型:boolean
- 修饰符:public
参数:
- value: ItemAttributeModifiers
说明:
TODO
代码
public record AttributeModifiersPredicate(Optional<CollectionPredicate<ItemAttributeModifiers.Entry, AttributeModifiersPredicate.EntryPredicate>> modifiers)
implements SingleComponentItemPredicate<ItemAttributeModifiers> {
public static final Codec<AttributeModifiersPredicate> CODEC = RecordCodecBuilder.create(
i -> i.group(
CollectionPredicate.<ItemAttributeModifiers.Entry, AttributeModifiersPredicate.EntryPredicate>codec(
AttributeModifiersPredicate.EntryPredicate.CODEC
)
.optionalFieldOf("modifiers")
.forGetter(AttributeModifiersPredicate::modifiers)
)
.apply(i, AttributeModifiersPredicate::new)
);
@Override
public DataComponentType<ItemAttributeModifiers> componentType() {
return DataComponents.ATTRIBUTE_MODIFIERS;
}
public boolean matches(ItemAttributeModifiers value) {
return !this.modifiers.isPresent() || this.modifiers.get().test(value.modifiers());
}
public record EntryPredicate(
Optional<HolderSet<Attribute>> attribute,
Optional<Identifier> id,
MinMaxBounds.Doubles amount,
Optional<AttributeModifier.Operation> operation,
Optional<EquipmentSlotGroup> slot
) implements Predicate<ItemAttributeModifiers.Entry> {
public static final Codec<AttributeModifiersPredicate.EntryPredicate> CODEC = RecordCodecBuilder.create(
i -> i.group(
RegistryCodecs.homogeneousList(Registries.ATTRIBUTE)
.optionalFieldOf("attribute")
.forGetter(AttributeModifiersPredicate.EntryPredicate::attribute),
Identifier.CODEC.optionalFieldOf("id").forGetter(AttributeModifiersPredicate.EntryPredicate::id),
MinMaxBounds.Doubles.CODEC
.optionalFieldOf("amount", MinMaxBounds.Doubles.ANY)
.forGetter(AttributeModifiersPredicate.EntryPredicate::amount),
AttributeModifier.Operation.CODEC.optionalFieldOf("operation").forGetter(AttributeModifiersPredicate.EntryPredicate::operation),
EquipmentSlotGroup.CODEC.optionalFieldOf("slot").forGetter(AttributeModifiersPredicate.EntryPredicate::slot)
)
.apply(i, AttributeModifiersPredicate.EntryPredicate::new)
);
public boolean test(ItemAttributeModifiers.Entry value) {
if (this.attribute.isPresent() && !this.attribute.get().contains(value.attribute())) {
return false;
} else if (this.id.isPresent() && !this.id.get().equals(value.modifier().id())) {
return false;
} else if (!this.amount.matches(value.modifier().amount())) {
return false;
} else {
return this.operation.isPresent() && this.operation.get() != value.modifier().operation()
? false
: !this.slot.isPresent() || this.slot.get() == value.slot();
}
}
}
}引用的其他类
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RegistryCodecs.homogeneousList()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
参数/返回值
- 引用位置: