SingleOptionInput.java
net.minecraft.server.dialog.input.SingleOptionInput
信息
- 全限定名:net.minecraft.server.dialog.input.SingleOptionInput
- 类型:public record
- 包:net.minecraft.server.dialog.input
- 源码路径:src/main/java/net/minecraft/server/dialog/input/SingleOptionInput.java
- 起始行号:L14
- 实现:InputControl
- 职责:
TODO
字段/常量
MAP_CODEC- 类型:
MapCodec<SingleOptionInput> - 修饰符:
public static final - 源码定位:
L15 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.server.dialog.input.SingleOptionInput.Entry- 类型:
record - 修饰符:
public - 源码定位:
L38 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public MapCodec<SingleOptionInput> mapCodec() @ L29
- 方法名:mapCodec
- 源码定位:L29
- 返回类型:MapCodec
- 修饰符:public
参数:
- 无
说明:
TODO
public Optional<SingleOptionInput.Entry> initial() @ L34
- 方法名:initial
- 源码定位:L34
- 返回类型:Optional<SingleOptionInput.Entry>
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public record SingleOptionInput(int width, List<SingleOptionInput.Entry> entries, Component label, boolean labelVisible) implements InputControl {
public static final MapCodec<SingleOptionInput> MAP_CODEC = RecordCodecBuilder.<SingleOptionInput>mapCodec(
i -> i.group(
Dialog.WIDTH_CODEC.optionalFieldOf("width", 200).forGetter(SingleOptionInput::width),
ExtraCodecs.nonEmptyList(SingleOptionInput.Entry.CODEC.listOf()).fieldOf("options").forGetter(SingleOptionInput::entries),
ComponentSerialization.CODEC.fieldOf("label").forGetter(SingleOptionInput::label),
Codec.BOOL.optionalFieldOf("label_visible", true).forGetter(SingleOptionInput::labelVisible)
)
.apply(i, SingleOptionInput::new)
)
.validate(o -> {
long initialCount = o.entries.stream().filter(SingleOptionInput.Entry::initial).count();
return initialCount > 1L ? DataResult.error(() -> "Multiple initial values") : DataResult.success(o);
});
@Override
public MapCodec<SingleOptionInput> mapCodec() {
return MAP_CODEC;
}
public Optional<SingleOptionInput.Entry> initial() {
return this.entries.stream().filter(SingleOptionInput.Entry::initial).findFirst();
}
public record Entry(String id, Optional<Component> display, boolean initial) {
public static final Codec<SingleOptionInput.Entry> FULL_CODEC = RecordCodecBuilder.create(
i -> i.group(
Codec.STRING.fieldOf("id").forGetter(SingleOptionInput.Entry::id),
ComponentSerialization.CODEC.optionalFieldOf("display").forGetter(SingleOptionInput.Entry::display),
Codec.BOOL.optionalFieldOf("initial", false).forGetter(SingleOptionInput.Entry::initial)
)
.apply(i, SingleOptionInput.Entry::new)
);
public static final Codec<SingleOptionInput.Entry> CODEC = Codec.withAlternative(
FULL_CODEC, Codec.STRING, id -> new SingleOptionInput.Entry(id, Optional.empty(), false)
);
public Component displayOrDefault() {
return this.display.orElseGet(() -> Component.literal(this.id));
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Component.literal()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ExtraCodecs.nonEmptyList()
- 引用位置: