阅读本文前,请先阅读HMCL官方文章:https://hmcl.huangyuhui.net/help/launcher/serverpack.html

本文是HMCL官方文章的一些补充,以及Nginx静态资源示例。

配置静态资源网站

这里有两种解决方案:

  1. 使用GitHub来当静态资源网站,好处是可以白嫖,坏处是国内访问GitHub处于量子叠加态时好时坏,本来是可以使用Gitee的,但是现在Gitee倒了,开源仓库需要审核。
  2. 自行搭建静态资源网站,其实对于各位腐竹来说这个选择也不错,因为本身就有服务器,只需要搭建一下静态资源服务器就可以使用。

对于以上两种解决方案各位自行选择。
这里提供参考资料:

  1. 使用GitHub第三方静态资源网站教程:https://www.bilibili.com/video/BV1hu411C7BZ
  2. 自行搭建静态资源服务器,参考我之前的文章:Nginx静态资源服务器使用 https://buggzd.github.io/2023/01/11/Nginx静态资源服务器使用/

本篇将以Nginx做静态资源服务器为例,所以请看第二篇Nginx静态资源服务器使用

导出整合包

image.png
选择服务器自动更新整合包
image.png
整合包下载链接前缀:填静态资源服务器的地址。
我们从Nginx静态资源服务器使用这篇文章继续,我们需要先去静态资源文件夹下新建一个modepack文件夹(也就是/MinecraftClientStatic/modepack),然后整合包下载链接前缀这里填写http://minecraft.buggzd.com/modepack
image.png

上传整合包到静态资源服务器

假设我们刚刚打包的整合包名称为client1.0.zip
我们把client1.0.zip通过ftp上传到服务器中,然后使用解压命令将这个整合包解压到/MinecraftClientStatic/modepack文件夹中。

# 假设我们把client1.0.zip上传到了/home/ftp文件夹中
# 把 /home/ftp/client1.0.zip 解压到 /minecraftClientStatic/modepack
unzip /home/ftp/client1.0.zip -d /minecraftClientStatic/modepack

解压完以后我们查看一下

ls /minecraftClientStatic/modepack

服务器返回:

overrides server-manifest.json

其中overrides是一个文件夹,server-manifest.json是整合包配置文件。

客户端初始化

第一次使用客户端需要在一个空文件夹中放一个hmcl启动器,打开hmcl导入刚刚做好的client1.0.zip
然后就可以把这个文件夹打包成一个zip发给玩家了,以后玩家每次打开hmcl登录时,hmcl就会自动向静态资源服务器中查询整合包配置信息,当发现更新时会自动下载。
当缺少mod时会自动下载静态资源服务器上的mod
image.png

更新客户端

目前HMCL版本更新的步骤是这样的:

  1. hmcl对比本地的mod和服务器的mod名称,发现服务器上存在本地不存在的mod,把不存在的mod下载。
  2. 对比名称相同的mod,当对比的mod存在名称相同时,对比其MD5哈希值,如果哈希值不匹配则重新下载服务器上的mod。
  3. 在获得更新的时候对比一次本地的文件,如果以前版本的模组在新的版本没有了,hmcl会自动将本地的这个模组删除
  4. 在不通过远端服务器更新的资源都不回被下次更新删除,换句话说就是如果是玩家自己魔改整合包,往里面放的mod是不会被删除的。

当想要添加新的mod,添加后需要重新导出整合包,导出的整合包版本++,然后重新上传整合包到静态资源服务器,玩家打开hmcl点击启动后,HMCL就会检测到版本更新,自动更新mod。

参考资料:
HMCL官方文章:https://hmcl.huangyuhui.net/help/launcher/serverpack.html
使用Gitee作为静态资源服务器:https://www.kdocs.cn/l/ck0hwms5llq8
Nginx配置静态资源服务器:https://buggzd.github.io/2023/01/11/Nginx静态资源服务器使用/

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟