version.json是mojang提供的用于查询单个版本信息的清单文件,其文件名为<版本号>.json,通常存储在.minecraft/versions/<版本号>
文件夹下。用于启动器下载某个特定的游戏版本。
文件下载[]
该文件可以通过version_manifest.json文件提供的URL下载。
文件大体结构[]
version.json使用JSON结构来保存及取出数据。下面列出了对其中主要JSON键值的解释:
键 | 类型 | 说明 |
---|---|---|
arguments | Map | 参数列表,分为JVM及game类型为列表的子键,分别用于指定当前版本的JVM参数及游戏参数,在1.13之前,该键由minecraftArguments代替。 |
assetIndex | Map | 当前版本的资源文件索引,包含其下载地址等信息。 |
assets | 字符串 | 当前版本的资源文件版本。 |
downloads | Map | 包含客户端及服务端下载地址等信息。 |
libraries | Map | 游戏所有依赖库,包含其下载地址等信息。 |
logging | Map | log4j配置文件,包含其下载地址等信息。 |
mainClass | 字符串 | 主类名。 |
releaseTime | 字符串 | 使用ISO 8601格式化的数据,用于表示版本的发布时间。 |
time | 字符串 | 使用ISO 8601格式化的数据,用于表示版本的更新时间。 |
type | 字符串 | 版本类型,可以是:release(正式版)、snapshot(快照)、old_beta(Beta版)或old_alpha(Alpha版)。 |
文件示例内容如下:
{
"arguments": {
"game": [
"--username",
"${auth_player_name}",
"--version",
"${version_name}",
...
{
"rules": [
{
"action": "allow",
"features": {
"is_demo_user": true
}
}
],
"value": "--demo"
},
...
],
"jvm": [
{
"rules": [
{
"action": "allow",
"os": {
"name": "osx"
}
}
],
"value": [
"-XstartOnFirstThread"
]
},
...
]
},
"assetIndex": {
"id": "1.19",
"sha1": "d45eb5e0c20e5d753468de3d68b05c45a946f49b",
"size": 385416,
"totalSize": 553754183,
"url": "https://piston-meta.mojang.com/v1/packages/d45eb5e0c20e5d753468de3d68b05c45a946f49b/1.19.json"
},
"assets": "1.19",
"complianceLevel": 1,
"downloads": {
"client": {
"sha1": "dc26b29eb345cbb60e3939af0b7c78fa52a60daa",
"size": 21550637,
"url": "https://piston-data.mojang.com/v1/objects/dc26b29eb345cbb60e3939af0b7c78fa52a60daa/client.jar"
},
"client_mappings": {
"sha1": "e30571a5d3b123b42dcf141570ed0737434e8c4c",
"size": 7176338,
"url": "https://piston-data.mojang.com/v1/objects/e30571a5d3b123b42dcf141570ed0737434e8c4c/client.txt"
},
"server": {
"sha1": "fdad42550c3f0bcdc52680dcebd5b712d32bc5d7",
"size": 45557085,
"url": "https://piston-data.mojang.com/v1/objects/fdad42550c3f0bcdc52680dcebd5b712d32bc5d7/server.jar"
},
"server_mappings": {
"sha1": "f31da192de018cbd3b449881f8778f5fcec6f56b",
"size": 5556366,
"url": "https://piston-data.mojang.com/v1/objects/f31da192de018cbd3b449881f8778f5fcec6f56b/server.txt"
}
},
"id": "22w24a",
"javaVersion": {
"component": "java-runtime-gamma",
"majorVersion": 17
},
"libraries": [
{
"downloads": {
"artifact": {
"path": "com/mojang/logging/1.0.0/logging-1.0.0.jar",
"sha1": "f6ca3b2eee0b80b384e8ed93d368faecb82dfb9b",
"size": 15343,
"url": "https://libraries.minecraft.net/com/mojang/logging/1.0.0/logging-1.0.0.jar"
}
},
"name": "com.mojang:logging:1.0.0"
},
...
],
"logging": {
"client": {
"argument": "-Dlog4j.configurationFile=${path}",
"file": {
"id": "client-1.12.xml",
"sha1": "bd65e7d2e3c237be76cfbef4c2405033d7f91521",
"size": 888,
"url": "https://launcher.mojang.com/v1/objects/bd65e7d2e3c237be76cfbef4c2405033d7f91521/client-1.12.xml"
},
"type": "log4j2-xml"
}
},
"mainClass": "net.minecraft.client.main.Main",
"minimumLauncherVersion": 21,
"releaseTime": "2022-06-15T16:21:49+00:00",
"time": "2022-06-15T16:21:49+00:00",
"type": "snapshot"
}
字符串格式化[]
在本json文件中,很多字符串值并不可以直接使用,而是有类似${var}
的结构,这是需要格式化用字符串,在使用时应替换为对应变量。
规则(rules)[]
arguments下的game和JVM键中可能不止有字符串,也可能会是包含rules键的一个Map。像这样包含rules的Map也可能出现在libraries列表中的每一项中。
rules通常会有以下内容:
键 | 类型 | 说明 |
---|---|---|
action | 字符串 | 对当前项执行的操作,可以是allow(允许)或disallow(不允许),若满足其余键值,则执行该action。 |
features | Map | 对应启动器内设置,通常是一个布尔变量。 |
os | Map | 当前系统相关的要求,有name(系统名称)、version(系统版本)和arch(系统架构)。 |
游戏参数[]
游戏参数以列表的形式保存在arguments.game中。
资源索引[]
用于资源索引的json文件的相关信息存储在assetIndex键中,拥有以下内容:
键 | 类型 | 说明 |
---|---|---|
id | 字符串 | 资源索引的标识符。 |
size | 整型 | 资源索引文件的文件大小。 |
totalSize | 整型 | 所有资源文件的总大小。 |
url | 字符串 | 下载资源索引文件的完整URL。 |
客户端/服务端[]
客户端和服务端的信息分别存储在downloads下的client和server两个键,拥有以下相同格式的内容:
键 | 类型 | 说明 |
---|---|---|
sha1 | 字符串 | 客户端/服务端的sha1校验码。 |
size | 整型 | 客户端/服务端的文件大小。 |
url | 字符串 | 下载客户端/服务端的完整URL。 |
依赖库[]
依赖库文件相关信息以列表的形式存储在libraries键下,几乎都有downloads和name两个键。downloads存储了依赖库文件的下载相关信息,而name的结构如下:
<package>:<name>:<version>
此处package
为完整包名,name
为库名,而version
为库版本号。
他们虽然存储的层级不同,但是拥有相同的json文件信息格式如下:
键 | 类型 | 说明 |
---|---|---|
path | 字符串 | 依赖库文件相对于libraries文件夹的路径,并包含文件名。除文件名外的路径总是为<package>/<name>/<version>/ ,此三个变量即对应的name键。
|
sha1 | 字符串 | 依赖库文件的sha1校验码。 |
size | 整型 | 依赖库文件的文件大小。 |
url | 字符串 | 依赖库文件的完整URL,总是为相对路径前跟上https://libraries.minecraft.net/ 。
|
普通依赖库文件[]
普通的依赖库文件的信息存储在libraries[?].downloads.artifact中。
它的文件名也可从name键中推断,重组为:
<name>-<version>.jar
natives库文件[]
只有libraries[?].downloads键下包含natives项目才是natives库文件。
其信息存储在libraries[?].downloads.artifact.classifiers.<natives_key>中,<natives_key>为natives键中当然系统对应的值。
它的文件名也可从name键中推断,重组为:
<name>-<version>-<natives_key>.jar
游戏日志[]
游戏日志的配置保存在logging中,目前只有client一个键,只有客户端的日志配置信息。
argument键存储了启动游戏时需要的额外JVM参数。
file键保存了配置文件的信息,内容如下:
键 | 类型 | 说明 |
---|---|---|
id | 字符串 | 日志配置文件的文件名。 |
sha1 | 字符串 | 日志配置文件的sha1校验码。 |
size | 整型 | 日志配置文件的文件大小。 |
url | 字符串 | 日志配置文件的完整URL。 |
而type键保存了配置文件的类型。
|