CommonDialogData.java

net.minecraft.server.dialog.CommonDialogData

信息

  • 全限定名:net.minecraft.server.dialog.CommonDialogData
  • 类型:public record
  • 包:net.minecraft.server.dialog
  • 源码路径:src/main/java/net/minecraft/server/dialog/CommonDialogData.java
  • 起始行号:L13
  • 职责:

    TODO

字段/常量

  • MAP_CODEC
    • 类型: MapCodec<CommonDialogData>
    • 修饰符: public static final
    • 源码定位: L22
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public Component computeExternalTitle() @ L40

  • 方法名:computeExternalTitle
  • 源码定位:L40
  • 返回类型:Component
  • 修饰符:public

参数:

说明:

TODO

代码

public record CommonDialogData(
    Component title,
    Optional<Component> externalTitle,
    boolean canCloseWithEscape,
    boolean pause,
    DialogAction afterAction,
    List<DialogBody> body,
    List<Input> inputs
) {
    public static final MapCodec<CommonDialogData> MAP_CODEC = RecordCodecBuilder.<CommonDialogData>mapCodec(
            i -> i.group(
                    ComponentSerialization.CODEC.fieldOf("title").forGetter(CommonDialogData::title),
                    ComponentSerialization.CODEC.optionalFieldOf("external_title").forGetter(CommonDialogData::externalTitle),
                    Codec.BOOL.optionalFieldOf("can_close_with_escape", true).forGetter(CommonDialogData::canCloseWithEscape),
                    Codec.BOOL.optionalFieldOf("pause", true).forGetter(CommonDialogData::pause),
                    DialogAction.CODEC.optionalFieldOf("after_action", DialogAction.CLOSE).forGetter(CommonDialogData::afterAction),
                    DialogBody.COMPACT_LIST_CODEC.optionalFieldOf("body", List.of()).forGetter(CommonDialogData::body),
                    Input.CODEC.listOf().optionalFieldOf("inputs", List.of()).forGetter(CommonDialogData::inputs)
                )
                .apply(i, CommonDialogData::new)
        )
        .validate(
            data -> data.pause && !data.afterAction.willUnpause()
                ? DataResult.error(() -> "Dialogs that pause the game must use after_action values that unpause it after user action!")
                : DataResult.success(data)
        );
 
    public Component computeExternalTitle() {
        return this.externalTitle.orElse(this.title);
    }
}

引用的其他类