news 2026/8/23 12:22:14

如何从 Git 自动构建多版本 Modpack?SKCraft Launcher × CI 实战完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何从 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 构建只需三步:

  1. 检出Git 仓库(不同分支/Tag = 不同版本)
  2. 执行构建命令,传入--version版本号(建议直接用 Git commit 或 Tag 名)
  3. 上传输出目录到你的静态 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 / --inputModpack 源目录(含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 系统均可):

  1. 触发:推送 Tag(如v1.2.3)或合并到发布分支
  2. 构建:调用上面的PackageBuilder命令,--version取 CI 的 Tag 名/commit 短哈希
  3. 校验:构建器内置validateManifest(),缺namegameVersion会直接失败(PackageBuilder.java#L315-L318),CI 可据此拦截坏包
  4. 上传:把output/目录整体上传到静态站点(无需 PHP),结构见 sample-files/upload/
  5. 注册:将新包加入packages.json索引(示例含 name、version、location、priority 字段),客户端即可在启动器中选择

💡 增量更新与文件去重由启动器自动完成:玩家升级新版只下载变化的文件,同一站点多个包共享objects/时自动复用磁盘空间。

四、发布后的玩家体验

构建产物被索引后,玩家端就是熟悉的启动器界面:

  • 启动器会拉取packages.json列出所有包,按version判断是否有更新(增量更新)
  • 还支持"可选特性"(features):把部分 mods 标记为可选,玩家自行勾选安装(见 Feature.java)

五、常用技巧清单

  • 🏷️版本号规范:用 Tag 名或语义化版本,避免时间戳,方便回溯
  • 📦离线构建:在pack/中放入version.json,构建器会跳过联网拉取版本清单(PackageBuilder.java#L328-L356),CI 环境更稳定
  • 🔢一个 Tag 一个包lightpackmonsterpack共用同一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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 12:20:57

技术招聘实战:精准定位与高效评估策略

1. 招聘程序员的痛点与挑战 技术招聘一直是企业发展的关键环节,但实际操作中HR和技术主管常常面临诸多困境。最典型的场景是:业务部门突然提出紧急用人需求,要求两周内到岗,而招聘团队手头却没有合适的候选人资源池。这种情况在快…

作者头像 李华
网站建设 2026/8/23 12:19:34

RC马术仿真项目本地部署指南:从环境搭建到批量测试

这次我们来看一个名为“算力自由 浮舟湿地”的26赛季RC马术项目部署。从标题来看,这很可能是一个结合了“算力自由”(通常指本地化、低成本的计算资源利用)和“浮舟湿地”(可能是一个特定的项目代号或环境)的RC&#…

作者头像 李华
网站建设 2026/8/23 12:15:24

P4实战:从零构建ARP代理,掌握数据平面可编程核心

1. 项目概述:从零理解ARP转发的实战价值 如果你刚接触网络编程或者数据平面开发,听到“ARP转发”可能会觉得这不过是个陈旧协议的小实验。但当我第一次在P4可编程交换机上亲手实现它时,那种感觉完全不同。这就像你一直开自动挡汽车&#xff0…

作者头像 李华