ServerStatus.java
net.minecraft.network.protocol.status.ServerStatus
信息
- 全限定名:net.minecraft.network.protocol.status.ServerStatus
- 类型:public record
- 包:net.minecraft.network.protocol.status
- 源码路径:src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
- 起始行号:L17
- 职责:
TODO
字段/常量
CODEC- 类型:
Codec<ServerStatus> - 修饰符:
public static final - 源码定位:
L24 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.network.protocol.status.ServerStatus.Favicon- 类型:
record - 修饰符:
public - 源码定位:
L35 - 说明:
TODO
- 类型:
-
net.minecraft.network.protocol.status.ServerStatus.Players- 类型:
record - 修饰符:
public - 源码定位:
L52 - 说明:
TODO
- 类型:
-
net.minecraft.network.protocol.status.ServerStatus.Version- 类型:
record - 修饰符:
public - 源码定位:
L63 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
- 无
代码
public record ServerStatus(
Component description,
Optional<ServerStatus.Players> players,
Optional<ServerStatus.Version> version,
Optional<ServerStatus.Favicon> favicon,
boolean enforcesSecureChat
) {
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
i -> i.group(
ComponentSerialization.CODEC.lenientOptionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
ServerStatus.Players.CODEC.lenientOptionalFieldOf("players").forGetter(ServerStatus::players),
ServerStatus.Version.CODEC.lenientOptionalFieldOf("version").forGetter(ServerStatus::version),
ServerStatus.Favicon.CODEC.lenientOptionalFieldOf("favicon").forGetter(ServerStatus::favicon),
Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", false).forGetter(ServerStatus::enforcesSecureChat)
)
.apply(i, ServerStatus::new)
);
public record Favicon(byte[] iconBytes) {
private static final String PREFIX = "data:image/png;base64,";
public static final Codec<ServerStatus.Favicon> CODEC = Codec.STRING.comapFlatMap(string -> {
if (!string.startsWith("data:image/png;base64,")) {
return DataResult.error(() -> "Unknown format");
} else {
try {
String base64 = string.substring("data:image/png;base64,".length()).replaceAll("\n", "");
byte[] iconBytes = Base64.getDecoder().decode(base64.getBytes(StandardCharsets.UTF_8));
return DataResult.success(new ServerStatus.Favicon(iconBytes));
} catch (IllegalArgumentException var3) {
return DataResult.error(() -> "Malformed base64 server icon");
}
}
}, favicon -> "data:image/png;base64," + new String(Base64.getEncoder().encode(favicon.iconBytes), StandardCharsets.UTF_8));
}
public record Players(int max, int online, List<NameAndId> sample) {
public static final Codec<ServerStatus.Players> CODEC = RecordCodecBuilder.create(
i -> i.group(
Codec.INT.fieldOf("max").forGetter(ServerStatus.Players::max),
Codec.INT.fieldOf("online").forGetter(ServerStatus.Players::online),
NameAndId.CODEC.listOf().lenientOptionalFieldOf("sample", List.of()).forGetter(ServerStatus.Players::sample)
)
.apply(i, ServerStatus.Players::new)
);
}
public record Version(String name, int protocol) {
public static final Codec<ServerStatus.Version> CODEC = RecordCodecBuilder.create(
i -> i.group(
Codec.STRING.fieldOf("name").forGetter(ServerStatus.Version::name), Codec.INT.fieldOf("protocol").forGetter(ServerStatus.Version::protocol)
)
.apply(i, ServerStatus.Version::new)
);
public static ServerStatus.Version current() {
WorldVersion version = SharedConstants.getCurrentVersion();
return new ServerStatus.Version(version.name(), version.protocolVersion());
}
}
}引用的其他类
- SharedConstants
- 引用位置:
方法调用 - 关联成员:
SharedConstants.getCurrentVersion()
- 引用位置: