-
Notifications
You must be signed in to change notification settings - Fork 696
受服务器运营方控制更新的整合包规范
Yuhui Huang edited this page Jul 4, 2020
·
3 revisions
本文用于描述受服务器运营方控制更新的整合包规范,提供给其他希望兼容本规范的启动器开发者参考。
整合包由一个 zip 组成,文件夹格式可能长这样:
modpack.zip
+ overrides (覆盖进游戏运行目录的文件夹)
| + config (Forge Mod 的配置文件夹)
| | + forge.cfg
| | + ic2.cfg (一些 Mod 配置)
| |
| + mods (Forge Mod 文件夹)
| (... 以及一些其他在游戏运行目录下的文件夹,比如 resourcepacks)
| + libraries (整合包作者需要包含进整合包的支持库文件,比如 skinme 或其他自定义的文件)
| + A.jar
| + B.jar
+ server-manifest.json (整合包说明文件)
+ icon.png (整合包图标,可选,用于安装后设置为游戏图标)
{
"name": "整合包名称",
"author": "作者名",
"version": "整合包版本,可以建议作者采用 a.b.c 的方式提供版本号",
"description": "整合包说明,视实现的便利性可以提供 HTML 或者 Markdown 支持",
"fileApi": "如果整合包允许远程更新,那么 fileApi 指整合包解压后的 web 路径",
"url": "提供源网站路径", // 此处可以提供数组来保存多个候选项
"update": "full", // 整合包的更新方法,具体见下
"addons": [ // addons 数组存储需要执行自动安装的第三方库或者整合包作者需要包含的支持库文件,只包含 id 和 version
{
"id": "game", // game 表示游戏本体,game 项为必须项
"version": "1.15.2"
},
{
"id": "forge", // 该整合包需要安装 forge
"version": "31.2.27" // forge 版本与 BMCLAPI 的版本号对应
}
],
"libraries": [ // 整合包作者需要额外包含的支持库文件,该项非必须
{
"name": "cn.skinme.skinme-loader" // 如果整合包需要自带额外的支持库,通过 hint:local 表示
"filename": "skinme-loader-local.jar", // 指定支持库文件名
"hint": "local" // 文件存放于 modpack.zip/overrides/libraries/skinme-loader-local.jar"
// 文件路径不按官方的 libraries 设计,这样可以方便整合包作者手动维护
}
],
"files": [ // 整合包需要从网络下载的文件列表
{
"path": "resourcepacks/faithful.zip", // 文件存放路径(强制版本隔离,例:.minecraft/versions/1.15.2/resourcepacks/faithful.zip)
"hash": "<SHA-1 hash code>", // 文件 SHA-1 哈希值
"url": "https://some.website.com/path/to/faithful.zip" // 文件下载路径
}
]
}
其他已经在整合包内包含的文件不需要在 server-manifest.json
中规定。
比如上述 modpack.zip
解压后我们可以访问 overrides/config/forge.cfg
,fileApi
为 https://some.website.com/modpack
,那么网站应该确保 forge.cfg
文件可以在 $fileApi/$path
下载下来,在本例中即 https://some.website.com/modpack/overrides/config/forge.cfg
可以下载得到 forge.cfg
。
更新规则有以下几种:
-
full
:全量模式下如果玩家修改的整合包,更新时将被覆盖;玩家自己添加的文件将被删除。 -
normal
:普通模式下允许玩家自己修改整合包,同时被修改的文件将不会被更新的整合包覆盖;新增的文件不会被删除。 普通模式更加详细的规则参见 整合包文件替换方式