如何从 Git 自动构建多版本 Modpack?SKCraft Launcher × CI 实战完整指南
如何从 Git 自动构建多版本 Modpack?SKCraft Launcher × CI 实战完整指南
【免费下载链接】Launcher🚀 Distribute your Minecraft modpacks with a custom launcher项目地址: https://gitcode.com/gh_mirrors/launc/Launcher
🚀SKCraft Launcher是 Minecraft 最古老的 Modpack 分发平台:拖入 mods 和配置文件、自动生成构建包,让你的玩家一键安装并随时增量更新 Modpack。官方明确支持"从 Git(或任何 VCS)配合你最爱的持续集成服务器生成 Modpack,甚至可以做到一个分支或 Tag 对应一个 Modpack"——这正是多版本自动构建的关键。
一、核心思路:一条命令打通 Git 到构建
整个自动化的秘密在于PackageBuilder(位于 launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java),它既是图形工具背后的引擎,也是可直接被 CI 调用的命令行程序。
每次 CI 构建只需三步:
- 检出Git 仓库(不同分支/Tag = 不同版本)
- 执行构建命令,传入
--version版本号(建议直接用 Git commit 或 Tag 名) - 上传输出目录到你的静态 Web 服务器或 CDN
java -cp launcher-builder.jar com.skcraft.launcher.builder.PackageBuilder \ --version v1.2.3 \ --manifest-dest ./output/lightpack.json \ -i ./pack \ -o ./output参数含义(见 BuilderOptions.java):
| 参数 | 作用 |
|---|---|
--version | 本次构建的版本号(必填,多版本的核心) |
--manifest-dest | 生成的 manifest 文件路径(必填) |
-i / --input | Modpack 源目录(含src/、loaders/、modpack.json) |
-o / --output | 输出目录,生成objects/与libraries/ |
--mc-version | 覆盖modpack.json中的游戏版本 |
二、Modpack 源码目录:多版本的"原料"
构建器扫描的是标准目录结构,你可以把它整个放进 Git 仓库:
pack/ ├── modpack.json # 打包配置(名称、游戏版本、启动参数) ├── version.json # 可选:本地游戏版本清单,离线构建 ├── src/ │ ├── config/ │ ├── mods/ │ └── resourcepacks/ └── loaders/ # Forge / Fabric / Quilt 安装器modpack.json声明游戏版本,例如示例包 sample-files/lightpack/modpack.json 中的"gameVersion": "1.8"loaders/放入 Forge / Fabric / Quilt 安装器 JAR,构建器会自动解析其install_profile.json并下载全部依赖库(见 PackageBuilder.java#L148-L195)- 多版本策略:每个分支/Tag 对应一份源码,或按游戏版本维护多个
modpack.json(配合--mc-version参数)
三、CI 流水线:一个分支一个 Modpack
官方 README 原文推荐:"you can generate modpacks from Git (or any VCS) using your favorite continuous integration server, and then dynamically create modpacks even down to one per branch or tag"(见 README.md)。
典型流水线(任意 CI 系统均可):
- 触发:推送 Tag(如
v1.2.3)或合并到发布分支 - 构建:调用上面的
PackageBuilder命令,--version取 CI 的 Tag 名/commit 短哈希 - 校验:构建器内置
validateManifest(),缺name或gameVersion会直接失败(PackageBuilder.java#L315-L318),CI 可据此拦截坏包 - 上传:把
output/目录整体上传到静态站点(无需 PHP),结构见 sample-files/upload/ - 注册:将新包加入
packages.json索引(示例含 name、version、location、priority 字段),客户端即可在启动器中选择
💡 增量更新与文件去重由启动器自动完成:玩家升级新版只下载变化的文件,同一站点多个包共享objects/时自动复用磁盘空间。
四、发布后的玩家体验
构建产物被索引后,玩家端就是熟悉的启动器界面:
- 启动器会拉取
packages.json列出所有包,按version判断是否有更新(增量更新) - 还支持"可选特性"(features):把部分 mods 标记为可选,玩家自行勾选安装(见 Feature.java)
五、常用技巧清单
- 🏷️版本号规范:用 Tag 名或语义化版本,避免时间戳,方便回溯
- 📦离线构建:在
pack/中放入version.json,构建器会跳过联网拉取版本清单(PackageBuilder.java#L328-L356),CI 环境更稳定 - 🔢一个 Tag 一个包:
lightpack与monsterpack共用同一objects/,不同游戏版本(1.8 与 1.13+)各用独立 manifest - 🧪本地调试:先用图形版 Creator 手工打包验证目录结构,再交给 CI 全自动化(入口 Creator.java)
六、总结
| 步骤 | 工具/命令 | 说明 |
|---|---|---|
| 版本管理 | Git 分支/Tag | 每个 Tag 即一个可发布版本 |
| 构建 | PackageBuilder --version … | CI 中一条命令生成完整分发目录 |
| 发布 | 静态站点 +packages.json | 无需后端,支持增量更新 |
| 玩家端 | SKCraft Launcher | 自动检测更新、按需下载 |
把 Modpack 源码交给 Git,把构建交给 CI,剩下的交给 SKCraft Launcher——多版本自动分发就是这么简单 🎉
【免费下载链接】Launcher🚀 Distribute your Minecraft modpacks with a custom launcher项目地址: https://gitcode.com/gh_mirrors/launc/Launcher
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
