Minecraft 整合包更新器。CLI、TUI 和可选的 egui GUI 共用 Rust 更新核心;支持客户端和服务端。它从安装版本的 commit 更新到指定 tag/commit,同步 Git 跟踪文件及 bkmpw 管理的模组、资源包和光影。Minecraft 或 NeoForge 版本变化时会停止更新并提示新建实例。
先停止游戏或服务端,并备份整个实例。下载 Release 中与操作系统相符的压缩包,解压后运行其中的 minecraft-modpack-updater。支持 Linux(glibc)、Windows、macOS 的 x64 / ARM64;便携包无需 Node.js。
也可通过 npm 安装(需要 Node.js 18 或更新版本):
npm install --global @jsi-team/minecraft-modpack-updater
minecraft-modpack-updater guinpm 自动选择当前平台的原生程序。更新器自动检测 bkmpw;缺少时可选择下载到实例目录或通过 npm 全局安装。实例须含 config/createdelight_release_info.json。
# 预览(不会写入实例)
minecraft-modpack-updater preview-remote --instance /path/to/minecraft --target v2.0.0.0-test2
# 更新客户端;服务端改用 --side server
minecraft-modpack-updater update-remote --instance /path/to/minecraft --side client --target v2.0.0.0-test2
# 终端界面:选择检测到的实例与最近发布版本;Tab 补全路径,F2 浏览目录
# 侧别默认客户端;也可继续通过参数预填
minecraft-modpack-updater tui
# GUI(需启用 gui 功能构建):选实例、选发布版本、点更新
minecraft-modpack-updater gui
# 应用阶段中断后,从已校验的备份回退
minecraft-modpack-updater rollback --instance /path/to/minecraft带 GUI 的构建不传参数时直接打开窗口,也可使用 gui 子命令。GUI 会列出检测到的实例,或用系统文件夹选择框选取;选择启动器实例外层目录时,会识别其中的 minecraft / .minecraft。识别后显示当前整合包、Minecraft 和 NeoForge 版本,并自动读取保存的实例类型(首次根据服务端文件推荐,可自行调整)。发布版本在后台加载,可直接从下拉列表选择。仓库、令牌、工具路径和手动指定 commit 收在高级设置中。
更新默认访问公开仓库 Jasons-impart/Create-Delight-Project-Rebirth;可以用 --repo owner/name 指定其他仓库。GitHub 限流时可设置 GITHUB_TOKEN,或传 --token-stdin 从标准输入/隐藏终端输入读取令牌。令牌不会作为命令行参数传递。
preview 与 preview-remote 展示源码文件冲突;模组产物和生成文件冲突会在更新准备阶段检查。
无冲突时直接更新。有冲突时,默认停止并列出路径;CLI 可逐项指定 --resolve '路径=target'、--resolve '路径=local' 或 --resolve '路径=manual:/path/to/merged-file'。也可用 --conflicts use-target 或 --conflicts keep-local 批量决定;逐项选择优先。TUI 遇冲突可按 t 用新版、l 保留本地、m 输入手工合并文件路径,记录选择后重试。GUI 提供逐项“保留我的修改 / 使用所选版本”按钮,或通过文件选择框指定合并文件,无需输入规则;全部选择只作用于已展示的冲突,准备阶段发现新冲突时仍须确认。手动合并文件由用户在实例外编辑,更新器在准备阶段复制其内容。私有 jar 选择保留本地后不加入受管清单。TUI 和 GUI 提供回退入口;GUI 检测到未完成事务时会显示“恢复更新前的文件”。
更新器把侧别、可信缓存、生成文件基线、覆盖状态及事务备份放在实例内 .jsipack-updater/。准备和下载失败不会改动实例;应用中断后需先运行 rollback,再重新更新。不要在更新时启动游戏或修改实例文件。
更新器不夹带 bkmpw。GUI 的“工具与更新”提供安装与版本检查;TUI 缺少工具时可按 l 下载到实例,或按 n 通过 npm 全局安装 @bro-know-my/packwiz。实例内下载写入 .jsipack-updater/bin/,无需 npm。
minecraft-modpack-updater tools install bkmpw --instance /path/to/game --method local
minecraft-modpack-updater tools check --instance /path/to/game
minecraft-modpack-updater tools upgrade bkmpw --instance /path/to/game
minecraft-modpack-updater tools upgrade updater --instance /path/to/game交互终端缺少 bkmpw 时会询问安装方式;自动化脚本可在更新命令上使用 --install-bkmpw local。本体升级会下载并校验新程序,退出后由助手替换、重启,启动失败时尝试恢复旧版。未完成的实例事务需要先回退。
工具和源码快照下载显示实际大小、速度与进度。npm 安装显示真实输出;模组同步显示活动状态及 bkmpw 日志。在线版本检查、源码和缺少的模组下载需要联网。
cargo test --all-features
cargo clippy --all-features --all-targets -- -D warnings
cargo build --release --features guiupdate-local 和 preview/preview-managed 可用本地完整源码快照验证更新;快照目录须对应传入的完整 commit SHA。update-local 还需 --base-commit、--target-commit、--base-tree、--target-tree、--instance、--side,并可用 --bkmpw 指向协议兼容的本地程序。发布工作流在 Linux、Windows、macOS 构建更新器原生程序、便携包和 npm 平台包,独立验证推荐 bkmpw 并生成版本清单;发布包不夹带 bkmpw。
发布 tag vX.Y.Z 必须匹配 Cargo.toml 版本。先发布包含六个平台原生资产与 SHA-256 的 bkmpw 稳定版本;更新器使用仓库变量 BKMPW_TAG 选择推荐版本,默认 v0.2.7。六个平台构建、测试与真实 bkmpw 兼容性验证通过后才发布 GitHub Release,然后发布六个 npm 平台包与入口包。
npm 使用 GitHub Actions OIDC Trusted Publishing,无需 NPM_TOKEN。七个包须分别配置 GitHub owner Jasons-impart、repository JSIPackUpdater、workflow release.yml,Environment 留空,并允许 npm publish。首次发包使用 CI 上传的 npm-packages tgz,先平台包、后入口包;需要维护者 npm 登录并完成 2FA。失败后重跑只跳过内容完全一致的已发布版本。
游戏内入口 Modpack Update Checker 在独立仓库维护;与更新器的原生交接尚未实现。