DetectedVersion.java

net.minecraft.DetectedVersion

信息

  • 全限定名:net.minecraft.DetectedVersion
  • 类型:public class
  • 包:net.minecraft
  • 源码路径:src/main/java/net/minecraft/DetectedVersion.java
  • 起始行号:L18
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L19
    • 说明:

      TODO

  • BUILT_IN

    • 类型: WorldVersion
    • 修饰符: public static final
    • 源码定位: L20
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

public static WorldVersion createBuiltIn(String id, String name) @ L22

  • 方法名:createBuiltIn
  • 源码定位:L22
  • 返回类型:WorldVersion
  • 修饰符:public static

参数:

  • id: String
  • name: String

说明:

TODO

public static WorldVersion createBuiltIn(String id, String name, boolean stable) @ L26

  • 方法名:createBuiltIn
  • 源码定位:L26
  • 返回类型:WorldVersion
  • 修饰符:public static

参数:

  • id: String
  • name: String
  • stable: boolean

说明:

TODO

private static WorldVersion createFromJson(JsonObject root) @ L32

  • 方法名:createFromJson
  • 源码定位:L32
  • 返回类型:WorldVersion
  • 修饰符:private static

参数:

  • root: JsonObject

说明:

TODO

public static WorldVersion tryDetectVersion() @ L46

  • 方法名:tryDetectVersion
  • 源码定位:L46
  • 返回类型:WorldVersion
  • 修饰符:public static

参数:

说明:

TODO

代码

public class DetectedVersion {
    private static final Logger LOGGER = LogUtils.getLogger();
    public static final WorldVersion BUILT_IN = createBuiltIn(UUID.randomUUID().toString().replaceAll("-", ""), "Development Version");
 
    public static WorldVersion createBuiltIn(String id, String name) {
        return createBuiltIn(id, name, true);
    }
 
    public static WorldVersion createBuiltIn(String id, String name, boolean stable) {
        return new WorldVersion.Simple(
            id, name, new DataVersion(4786, "main"), SharedConstants.getProtocolVersion(), PackFormat.of(84, 0), PackFormat.of(101, 1), new Date(), stable
        );
    }
 
    private static WorldVersion createFromJson(JsonObject root) {
        JsonObject packVersion = GsonHelper.getAsJsonObject(root, "pack_version");
        return new WorldVersion.Simple(
            GsonHelper.getAsString(root, "id"),
            GsonHelper.getAsString(root, "name"),
            new DataVersion(GsonHelper.getAsInt(root, "world_version"), GsonHelper.getAsString(root, "series_id", "main")),
            GsonHelper.getAsInt(root, "protocol_version"),
            PackFormat.of(GsonHelper.getAsInt(packVersion, "resource_major"), GsonHelper.getAsInt(packVersion, "resource_minor")),
            PackFormat.of(GsonHelper.getAsInt(packVersion, "data_major"), GsonHelper.getAsInt(packVersion, "data_minor")),
            Date.from(ZonedDateTime.parse(GsonHelper.getAsString(root, "build_time")).toInstant()),
            GsonHelper.getAsBoolean(root, "stable")
        );
    }
 
    public static WorldVersion tryDetectVersion() {
        try {
            WorldVersion var2;
            try (InputStream stream = DetectedVersion.class.getResourceAsStream("/version.json")) {
                if (stream == null) {
                    LOGGER.warn("Missing version information!");
                    return BUILT_IN;
                }
 
                try (InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) {
                    var2 = createFromJson(GsonHelper.parse(reader));
                }
            }
 
            return var2;
        } catch (JsonParseException | IOException var8) {
            throw new IllegalStateException("Game version information is corrupt", var8);
        }
    }
}

引用的其他类

  • SharedConstants

    • 引用位置: 方法调用
    • 关联成员: SharedConstants.getProtocolVersion()
  • WorldVersion

    • 引用位置: 字段/方法调用/构造调用/返回值
    • 关联成员: Simple(), WorldVersion.Simple()
  • PackFormat

    • 引用位置: 方法调用
    • 关联成员: PackFormat.of()
  • GsonHelper

    • 引用位置: 方法调用
    • 关联成员: GsonHelper.getAsBoolean(), GsonHelper.getAsInt(), GsonHelper.getAsJsonObject(), GsonHelper.getAsString(), GsonHelper.parse()
  • DataVersion

    • 引用位置: 构造调用
    • 关联成员: DataVersion()