当前位置: 首页 > news >正文

如何从 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),仅供参考

http://www.cnnetsun.cn/news/4173737.html

相关文章:

  • 技术招聘实战:精准定位与高效评估策略
  • 为什么Rails应用越做越烂?Ruby Science揭秘代码腐化背后的Bug与变更定律
  • 多对多、自关联都能审计:EntityAuditBundle复杂关系版本化实现机制全解析
  • RC马术仿真项目本地部署指南:从环境搭建到批量测试
  • P4实战:从零构建ARP代理,掌握数据平面可编程核心
  • postgresql_cursor vs find_in_batches:深扒批量读取的4大致命缺陷,find_each为何不够用
  • 远程桌面与AI Agent开发实战:将高性能台式机变为便携云电脑
  • 编程思维四大核心与八种实战方法:从代码搬运工到系统设计者
  • Windows平台AI大模型本地部署:轻量化桌面应用开发实战
  • 协方差与相关矩阵:从概念到PCA与投资组合的实战应用
  • 多智能体系统中时序与结构信用分配的统一优化框架解析
  • 数学建模论文写作指南:从模型构建到高效表达的实战技巧
  • fastapi-permissions 进阶技巧:自定义403异常、All 通配权限与 ACL 归一化的6个关键点
  • 认识Pink:面向关节机器人的Python逆运动学库完全入门指南
  • 确定性AI:实现可复现输出的工程实践与CIYA项目解析
  • FlexLabs.Upsert 排错清单:InvalidMatchColumnsException 与 UnsupportedExpressionException 全解
  • Core Data与CollectionView UI实时同步:CompositionalDiffablePlayground Jokes示例收藏、上下文菜单与骨架屏动画完整实现
  • BreezeJS快速上手指南:在CustomerManagerStandard中掌握EntityManager、元数据获取与saveChanges完整工作流
  • 嵌入式学习路线全解析:从51单片机到STM32,新手避坑指南与核心技能构建
  • 数学建模实战:线性回归的核心假设、特征工程与模型诊断全解析
  • Vortigern 样式方案拆解:CSS Modules + PostCSS-Assets 完整配置指南
  • 深入react-native-app-tour源码:findNodeHandle与NativeModules如何打通JS与原生App Tour视图
  • 为什么DebugKit是Android开发者必备的悬浮调试神器?完整概览与功能解析
  • noteForOpenGL PBO像素缓冲对象:Pack/Unpack机制与CPU-GPU数据通道完整指南
  • 函数设计四大核心特性:从内置函数到模板重载的工程实践
  • OpCore-Simplify 快速上手指南:从硬件报告到 OpenCore EFI
  • Android开发者必学:从file_operations入门Linux驱动开发
  • 如何测试行级权限控制?用 pytest 与 pytest-mock 构建 fastapi-permissions 单元测试完全指南
  • 数学建模实战指南:从思维转变到模型落地的全流程解析
  • 开发者知识体系重构:从碎片化学习到系统化升级的工程实践