本站文本内容除另有声明外,转载时均必须注明出处。(详情…本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

教程/编写启动器/version.json

来自Minecraft Wiki
跳转至: 导航搜索

version.json是mojang提供的用于查询单个版本信息的清单文件,其文件名为<版本号>.json,通常存储在.minecraft/versions/<版本号>文件夹下。用于启动器下载某个特定的游戏版本。

文件下载[编辑 | 编辑源代码]

该文件可以通过version_manifest.json文件提供的URL下载。

文件大体结构[编辑 | 编辑源代码]

version.json使用JSON结构来保存及取出数据。下面列出了对其中主要JSON键值的解释:

类型 说明
arguments Map 参数列表,分为JVMgame类型为列表的子键,分别用于指定当前版本的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_betaBeta版)或old_alphaAlpha版)。

字符串格式化[编辑 | 编辑源代码]

在本json文件中,很多字符串值并不可以直接使用,而是有类似${var}的结构,这是需要格式化用字符串,在使用时应替换为对应变量。

规则(rules)[编辑 | 编辑源代码]

arguments下的gameJVM键中可能不止有字符串,也可能会是包含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下的clientserver两个键,拥有以下相同格式的内容:

类型 说明
sha1 字符串 客户端/服务端的sha1校验码。
size 整型 客户端/服务端的文件大小。
url 字符串 下载客户端/服务端的完整URL。

依赖库[编辑 | 编辑源代码]

依赖库文件相关信息以列表的形式存储在libraries键下,几乎都有downloadsname两个键。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键保存了配置文件的类型。