version.json是mojang提供的用于查询单个版本信息的清单文件,其文件名为<版本号>.json,通常存储在.minecraft/versions/<版本号>文件夹下。用于启动器下载某个特定的游戏版本。
文件下载
该文件可以通过version_manifest.json文件提供的URL下载。
文件大体结构
version.json使用JSON结构来保存及取出数据。下面列出了对其中主要JSON键值的解释:
| 键 | 类型 | 说明 |
|---|---|---|
| arguments | Map | 参数列表,分为JVM及game类型为列表的子键,分别用于指定当前版本的JVM参数及游戏参数,在1.13之前,该键由gameArguments代替。 |
| 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版)。 |
规则(rules)
arguments下的game和JVM键中可能不止有字符串,也可能会是包含rules键的一个Map。像这样包含rules的Map也可能出现在libraries列表中的每一项中。
rules通常会有以下内容:
| 键 | 类型 | 说明 |
|---|---|---|
| action | 字符串 | 对当前项执行的操作,可以是allow(允许)或disallow(不允许),若满足其余键值,则执行该action。 |
| features | Map | 对应启动器内设置,通常是一个布尔变量。 |
| os | Map | 当前系统相关的要求,有name(系统名称)、version(系统版本)和arch(系统架构)。 |
资源索引
用于资源索引的json文件的相关信息存储在assetIndex键中,拥有以下内容:
| 键 | 类型 | 说明 |
|---|---|---|
| id | 字符串 | 资源索引的标识符。 |
| size | 整型 | 资源索引文件的文件大小。 |
| totalSize | 整型 | 所有资源文件的总大小。 |
| url | 字符串 | 下载资源索引文件的完整URL。 |
客户端/服务端
客户端和服务端的信息分别存储在downloads下的client和server两个键,拥有以下相同格式的内容:
| 键 | 类型 | 说明 |
|---|---|---|
| sha1 | 字符串 | 客户端/服务端的sha1校验码。 |
| size | 整型 | 客户端/服务端的文件大小。 |
| url | 字符串 | 下载客户端/服务端的完整URL。 |
依赖库
依赖库文件相关信息以列表的形式存储在libraries键下,几乎都有downloads和name两个键。downloads村粗了依赖库文件的下载相关信息,而name是依赖库的完整包名。
普通依赖库文件
普通的依赖库文件存储在downloads键下的artifact中,拥有以下内容:
| 键 | 类型 | 说明 |
|---|---|---|
| path | 字符串 | 普通依赖库文件相对于libraries文件夹的路径。 |
| sha1 | 字符串 | 普通依赖库文件的sha1校验码。 |
| size | 整型 | 普通依赖库文件的文件大小。 |
| url | 字符串 | 普通依赖库文件的完整URL。 |