Skip to main content
Version: 1.21.4

NeoForge 更新检查器(Update Checker)

NeoForge 提供了一个非常轻量级、可选的更新检查框架。如果有任何模组(mod)存在可用更新,主菜单和模组列表中的“Mods”按钮会显示一个闪烁的图标,并附带相应的更新日志(changelog)。它 不会 自动下载更新。

入门(Getting Started)

你需要做的第一件事是在你的 mods.toml 文件中指定 updateJSONURL 参数。该参数的值应为一个有效的 URL,指向你的更新 JSON 文件。这个文件可以托管在你自己的 Web 服务器、GitHub 或任何其他能被所有你的模组用户可靠访问的位置。

更新 JSON 格式(Update JSON format)

这个 JSON 文件本身格式相对简单,如下所示:

{
"homepage": "<你的模组主页/下载页面>",
"<mcversion>": {
"<modversion>": "<该版本的更新日志>",
// 列出该 Minecraft 版本下你的所有模组版本及其对应的更新日志
// ...
},
"promos": {
"<mcversion>-latest": "<modversion>",
// 声明该 Minecraft 版本下你的模组的最新“前沿”版本
"<mcversion>-recommended": "<modversion>",
// 声明该 Minecraft 版本下你的模组的最新“稳定”版本
// ...
}
}

这个格式基本上很直观,但有几点需要注意:

  • homepage 下的链接会在模组过期时展示给用户。

  • NeoForge 使用内部算法来判断你的模组版本字符串之间的“新旧”关系。大多数版本号命名方案都能兼容,但如果你对自己的方案是否受支持有疑虑,可以参考 ComparableVersion 类。强烈推荐遵循 Maven 版本规范

  • 更新日志字符串可用 \n 分行。有人喜欢只写简要更新内容,并附上指向完整更新日志的外部链接。

  • 手动输入数据可能比较繁琐。你可以配置 build.gradle,在构建发布版本时自动更新此文件,因为 Groovy 原生支持 JSON 解析。具体实现方式留给读者自行探索。

  • 你可以在这里找到一些示例:NoCubesCorail Tombstone 以及 Chisels & Bits 2

获取更新检查结果(Retrieving Update Check Results)

你可以通过 VersionChecker#getResult(IModInfo) 获取 NeoForge 更新检查器的结果。你可以通过 ModContainer#getModInfo 获取你的 IModInfo,而 ModContainer 可以作为参数传入你的模组构造函数。如果你需要获取其他模组的 ModContainer,可以使用 ModList.get().getModContainerById(<modId>)。返回的对象有一个 #status 方法,用于指示版本检查的状态。

状态描述
FAILED版本检查器无法连接到提供的 URL。
UP_TO_DATE当前版本与推荐版本相同。
AHEAD当前版本比推荐版本新,并且没有最新版本的情况下。
OUTDATED存在新的推荐版本或最新版本。
BETA_OUTDATED存在新的最新版本。
BETA当前版本与最新版本相同或比最新版本新。
PENDING请求的结果尚未完成,请稍后再试。

返回的对象还会包含目标版本以及在 update.json 中指定的所有更新日志内容。