ClickEvent.java

net.minecraft.network.chat.ClickEvent

信息

  • 全限定名:net.minecraft.network.chat.ClickEvent
  • 类型:public interface
  • 包:net.minecraft.network.chat
  • 源码路径:src/main/java/net/minecraft/network/chat/ClickEvent.java
  • 起始行号:L19
  • 职责:

    TODO

字段/常量

  • CODEC
    • 类型: Codec<ClickEvent>
    • 修饰符: package-private
    • 源码定位: L20
    • 说明:

      TODO

内部类/嵌套类型

  • net.minecraft.network.chat.ClickEvent.Action

    • 类型: enum
    • 修饰符: public static
    • 源码定位: L24
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.ChangePage

    • 类型: record
    • 修饰符: public
    • 源码定位: L66
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.CopyToClipboard

    • 类型: record
    • 修饰符: public
    • 源码定位: L77
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.Custom

    • 类型: record
    • 修饰符: public
    • 源码定位: L88
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.OpenFile

    • 类型: record
    • 修饰符: public
    • 源码定位: L103
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.OpenUrl

    • 类型: record
    • 修饰符: public
    • 源码定位: L126
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.RunCommand

    • 类型: record
    • 修饰符: public
    • 源码定位: L137
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.ShowDialog

    • 类型: record
    • 修饰符: public
    • 源码定位: L148
    • 说明:

      TODO

  • net.minecraft.network.chat.ClickEvent.SuggestCommand

    • 类型: record
    • 修饰符: public
    • 源码定位: L159
    • 说明:

      TODO

构造器

方法

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

ClickEvent.Action action() @ L22

  • 方法名:action
  • 源码定位:L22
  • 返回类型:ClickEvent.Action
  • 修饰符:package-private

参数:

说明:

TODO

代码

public interface ClickEvent {
    Codec<ClickEvent> CODEC = ClickEvent.Action.CODEC.dispatch("action", ClickEvent::action, action -> action.codec);
 
    ClickEvent.Action action();
 
    public static enum Action implements StringRepresentable {
        OPEN_URL("open_url", true, ClickEvent.OpenUrl.CODEC),
        OPEN_FILE("open_file", false, ClickEvent.OpenFile.CODEC),
        RUN_COMMAND("run_command", true, ClickEvent.RunCommand.CODEC),
        SUGGEST_COMMAND("suggest_command", true, ClickEvent.SuggestCommand.CODEC),
        SHOW_DIALOG("show_dialog", true, ClickEvent.ShowDialog.CODEC),
        CHANGE_PAGE("change_page", true, ClickEvent.ChangePage.CODEC),
        COPY_TO_CLIPBOARD("copy_to_clipboard", true, ClickEvent.CopyToClipboard.CODEC),
        CUSTOM("custom", true, ClickEvent.Custom.CODEC);
 
        public static final Codec<ClickEvent.Action> UNSAFE_CODEC = StringRepresentable.fromEnum(ClickEvent.Action::values);
        public static final Codec<ClickEvent.Action> CODEC = UNSAFE_CODEC.validate(ClickEvent.Action::filterForSerialization);
        private final boolean allowFromServer;
        private final String name;
        private final MapCodec<? extends ClickEvent> codec;
 
        private Action(String name, boolean allowFromServer, MapCodec<? extends ClickEvent> codec) {
            this.name = name;
            this.allowFromServer = allowFromServer;
            this.codec = codec;
        }
 
        public boolean isAllowedFromServer() {
            return this.allowFromServer;
        }
 
        @Override
        public String getSerializedName() {
            return this.name;
        }
 
        public MapCodec<? extends ClickEvent> valueCodec() {
            return this.codec;
        }
 
        public static DataResult<ClickEvent.Action> filterForSerialization(ClickEvent.Action action) {
            return !action.isAllowedFromServer()
                ? DataResult.error(() -> "Click event type not allowed: " + action)
                : DataResult.success(action, Lifecycle.stable());
        }
    }
 
    public record ChangePage(int page) implements ClickEvent {
        public static final MapCodec<ClickEvent.ChangePage> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(ExtraCodecs.POSITIVE_INT.fieldOf("page").forGetter(ClickEvent.ChangePage::page)).apply(i, ClickEvent.ChangePage::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.CHANGE_PAGE;
        }
    }
 
    public record CopyToClipboard(String value) implements ClickEvent {
        public static final MapCodec<ClickEvent.CopyToClipboard> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(Codec.STRING.fieldOf("value").forGetter(ClickEvent.CopyToClipboard::value)).apply(i, ClickEvent.CopyToClipboard::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.COPY_TO_CLIPBOARD;
        }
    }
 
    public record Custom(Identifier id, Optional<Tag> payload) implements ClickEvent {
        public static final MapCodec<ClickEvent.Custom> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(
                    Identifier.CODEC.fieldOf("id").forGetter(ClickEvent.Custom::id),
                    ExtraCodecs.NBT.optionalFieldOf("payload").forGetter(ClickEvent.Custom::payload)
                )
                .apply(i, ClickEvent.Custom::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.CUSTOM;
        }
    }
 
    public record OpenFile(String path) implements ClickEvent {
        public static final MapCodec<ClickEvent.OpenFile> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(Codec.STRING.fieldOf("path").forGetter(ClickEvent.OpenFile::path)).apply(i, ClickEvent.OpenFile::new)
        );
 
        public OpenFile(File file) {
            this(file.toString());
        }
 
        public OpenFile(Path path) {
            this(path.toFile());
        }
 
        public File file() {
            return new File(this.path);
        }
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.OPEN_FILE;
        }
    }
 
    public record OpenUrl(URI uri) implements ClickEvent {
        public static final MapCodec<ClickEvent.OpenUrl> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(ExtraCodecs.UNTRUSTED_URI.fieldOf("url").forGetter(ClickEvent.OpenUrl::uri)).apply(i, ClickEvent.OpenUrl::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.OPEN_URL;
        }
    }
 
    public record RunCommand(String command) implements ClickEvent {
        public static final MapCodec<ClickEvent.RunCommand> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(ExtraCodecs.CHAT_STRING.fieldOf("command").forGetter(ClickEvent.RunCommand::command)).apply(i, ClickEvent.RunCommand::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.RUN_COMMAND;
        }
    }
 
    public record ShowDialog(Holder<Dialog> dialog) implements ClickEvent {
        public static final MapCodec<ClickEvent.ShowDialog> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(Dialog.CODEC.fieldOf("dialog").forGetter(ClickEvent.ShowDialog::dialog)).apply(i, ClickEvent.ShowDialog::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.SHOW_DIALOG;
        }
    }
 
    public record SuggestCommand(String command) implements ClickEvent {
        public static final MapCodec<ClickEvent.SuggestCommand> CODEC = RecordCodecBuilder.mapCodec(
            i -> i.group(ExtraCodecs.CHAT_STRING.fieldOf("command").forGetter(ClickEvent.SuggestCommand::command)).apply(i, ClickEvent.SuggestCommand::new)
        );
 
        @Override
        public ClickEvent.Action action() {
            return ClickEvent.Action.SUGGEST_COMMAND;
        }
    }
}

引用的其他类