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;
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
StringRepresentable.fromEnum()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
File()
- 引用位置: