2.3 Forge更新检查器

Forge更新检查器

Forge提供了一个非常轻量的可选升级检查模块。它所做的就是检查更新,然后在主菜单和模组列表的Mods按钮上显示一个小图标,如果任何模组有可用的更新也会显示对应的更新日志。它不能自动下载更新。

 

开始

你(可能)想做的第一件事是指定@Mod标记中的updateJSON参数。这个参数的值应当是一个指向一个包含更新信息的JSON文件的有效URL。这个更新用的JSON可以托管在你的web服务器上,GitHub或者你想托管的任何位置,只要它能够被你模组的用户可靠地访问到就可以。

 

更新所用的JSON的格式

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

{
  "homepage": "<homepage/download page for your mod>",
  "<mcversion>": {
    "<modversion>": "<changelog for this version>", 
    // List all versions of your mod for the given Minecraft version, along with their changelogs
    ...
  },
  ...
  "promos": {
    "<mcversion>-latest": "<modversion>",
    // Declare the latest "bleeding-edge" version of your mod for the given Minecraft version
    "<mcversion>-recommended": "<modversion>",
    // Declare the latest "stable" version of your mod for the given Minecraft version
    ...
  }
}

这显然比较易懂,但是有几个需要注意的地方:

  • homepage 下的链接是当模组版本较旧时显示给用户的链接。
  • Forge使用一种内部算法来确认你的模组版本字符串(代表的版本)比另一个“新”。多数版本编号模式应该都是兼容的,但如果你对自己的版本编号模式是否支持比较担忧的话,你可以参考ComparableVersion这个类。强烈建议继续使用 semantic versioning(https://semver.org/)。
  • 变更日志字符串的内容可以用\n实现换行。有人倾向于在这里写一个简短的变动日志,然后留一个能够提供相近更新日志内容的外部链接。
  • 手动输入数据可能会很繁琐。你可以设置你的build.gradle以实现在构建一个正式版本时自动更新这个文件,因为Groovy有原生的JSON解析支持。如何做这个就留给读者作为一个练习。

两个具体的例子是 Charset(https://gist.githubusercontent.com/Meow-J/fe740e287c2881d3bf2341a62a7ce770/raw/bf829cdefc84344d86d1922e2667778112b845b1/update.json) 和 Botania Unofficial(https://gist.githubusercontent.com/Meow-J/1299068c775c2b174632534a18b65fb8/raw/42c578cf2303aa76d8900f5fdc6366122549d2a8/update.json)。

 

获取更新检查结果

你可以借助 ForgeVersion.getResult(ModContainer) 这个方法来获取Forge更新检查器的结果。返回的对象有一个status域,表示版本检查的状态。取值举例:FAILED(版本检查器无法连接到给定的URL),UP_TO_DATE(当前版本等于或高于最新稳定版本),OUTDATED(有一个新的稳定版本),BETA_OUTDATED(有一个新的不稳定版本),BETA(当前版本等于或高于最新测试版本)。如果(检查更新的)请求尚未结束,状态将会为PENDING;在这种情况下(译者注:应该是指开发测试时遇到这种问题),你应当再多试一试,反之,返回的对象将会同时包含目标版本和update.json中指定的任何的变更日志内容。你可以通过 Loader.instance().activeModContainer() 获取自己模组的ModContainer来传递给这个方法,也可以通过 Loader.instance().getIndexedModList().get(<modid>) 这个方法来获取任何模组的ModContainer来传递给这个方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值