packwiz 中文教程 - SJMC-Dev/SMP3-modpack GitHub Wiki

packwiz 完整中文教程

本教程根据 packwiz 官方网站(及其全部链接页面)整理翻译而成,涵盖:软件介绍、安装方法、创建与管理整合包、分发与发布、命令参考、包格式(TOML 元数据)详解。

原文:https://packwiz.infra.link/ 源码:https://github.com/packwiz/packwiz


目录

  1. packwiz 是什么
  2. 安装 packwiz
  3. 快速上手:创建整合包
  4. 添加模组与资源包
  5. 配合 Git 使用
  6. 使用 packwiz-installer 安装与分发
  7. 发布到 CurseForge
  8. 发布到 Modrinth
  9. 附加选项(pack.toml 的 [options] 段)
  10. 命令参考
  11. 包格式详解
  12. 命令速查表(Cheat Sheet)

1. packwiz 是什么

packwiz 是一个用于创建 Minecraft 整合包(Modpack)的命令行工具。它不直接管理 JAR 文件,而是创建 TOML 格式的元数据文件,这些文件易于进行版本控制,并且可以通过 Git 分享(可参考官方示例整合包:https://github.com/packwiz/packwiz-example-pack )。

之后你可以:

  • 把它导出为 CurseForge 或 Modrinth 格式的整合包;
  • 或者使用 packwiz-installer(Java 编写)创建支持自动更新的 MultiMC 实例。

适用场景

packwiz 擅长:

  • 为服务器分发私有整合包;
  • 创建发布到 CurseForge 和 Modrinth 的整合包。

packwiz 不擅长:

需要帮助可以加入作者的 Discord 服务器:https://discord.gg/Csh8zbbhCt

主要特性

  • 对 Git 友好的 TOML 元数据格式
  • 基于 Java 的整合包安装器/更新器(兼容 MultiMC 和 ATLauncher),支持可选模组和快速自动更新——非常适合服务器!
  • 通过 HTTP 服务器分发整合包,内置本地测试服务器
  • 从 CurseForge 和 Modrinth 批量安装、更新多个模组
  • 导出为 CurseForge / Modrinth 整合包
  • 从 CurseForge 整合包导入
  • 支持仅服务端 / 仅客户端模组
  • 从 JAR 文件为 CurseForge 模组生成远程文件元数据

2. 安装 packwiz

方法一:下载预编译二进制(推荐)

预编译二进制文件可以从 GitHub Actions 下载:https://github.com/packwiz/packwiz/actions

该页面 UI 比较简陋:选择列表最顶部的构建,然后在页面底部下载对应你系统的 artifact zip 包。

下载后,把可执行文件所在的文件夹加入系统的 PATH 环境变量(Windows 教程见 https://www.howtogeek.com/118594/how-to-edit-your-system-path-for-easy-command-line-access/ ),或者把可执行文件移动到你想使用的目录中。

方法二:通过 nightly.link 下载

如果没有 GitHub 账号,或无法直接从 GitHub 下载,也可以使用 nightly.link 下载最新的自动构建产物:

https://nightly.link/packwiz/packwiz/workflows/go/main

方法三:从源码编译

  1. 安装 Go(1.19 或更新版本),下载地址:https://golang.org/dl/
  2. 运行命令(请耐心等待,需要下载并编译依赖):
go install github.com/packwiz/packwiz@latest

3. 快速上手:创建整合包

3.1 准备工作

使用 packwiz CLI 前,先创建一个用于开发整合包的文件夹:

  • 不要使用你的 .minecraft 文件夹或 MultiMC 实例文件夹;
  • 这个文件夹存放整合包的元数据和文件,由 packwiz 管理。

然后在命令行(Windows 的命令提示符 / 其他系统的 Terminal)中用 cd 命令进入该文件夹。

3.2 创建新的整合包

在文件夹内直接运行:

packwiz init

它会向你询问一些细节,然后根据你的回答生成 pack.toml 和 index.toml 两个文件。

  • pack.toml:整合包的主文件,定义关键信息——整合包名称、Minecraft 版本、模组加载器版本。可选地还可以包含版本号(导出为 Modrinth 整合包时必需)和描述。
  • index.toml:整合包的索引文件,列出整合包中的所有文件及其哈希(用于完整性校验)。通常不需要手动修改它,但当手动添加、删除或修改包内文件后,需要运行 packwiz refresh 命令刷新索引。

3.3 导入已有的整合包

如果你有现成的 CurseForge 整合包,可以使用 packwiz curseforge import 命令,传入整合包 .zip 的路径,即可把包内所有模组和文件导入当前目录:

packwiz curseforge import [zip 路径]

⚠️ 警告

  • 如果整合包中已有文件,导入操作会覆盖它们;
  • 如果导入的不是你自己的整合包,请确保你拥有重新分发它的许可/授权;
  • 强烈建议使用版本控制系统(如 Git)配合 packwiz 使用!

3.4 常用命令速查

快速总结最有用的命令(后续章节会有详细说明):

命令 作用
packwiz init 在当前文件夹创建整合包
packwiz curseforge import [zip 路径] 导入 CurseForge 整合包
packwiz refresh 更新整合包索引
packwiz curseforge install [模组] 从 CurseForge 安装模组
packwiz modrinth install [模组] 从 Modrinth 安装模组
packwiz update [模组] 更新某个模组
packwiz update --all 更新整合包中所有模组
packwiz curseforge export 导出为 CurseForge 启动器支持的格式
packwiz modrinth export 导出为 Modrinth(及其开发中的启动器)支持的格式
packwiz curseforge detect 检测可通过 CurseForge 下载的文件,改为从 CurseForge 获取

任何命令都可以加 --help 查看详细信息!


4. 添加模组与资源包

要向整合包添加外部文件(如模组、资源包),需要 .pw.toml 格式的元数据文件来定义如何下载它们。modrinth install 和 curseforge install 命令可以自动生成这些文件(包含全部所需元数据)。

4.1 从 CurseForge 和 Modrinth 添加

使用 modrinth install 和 curseforge install 命令即可轻松添加模组与资源包,还可以用 packwiz update 命令更新,加 --all 参数一次更新全部。

模组可以用多种形式传入命令:

CurseForge(packwiz curseforge install)

packwiz curseforge install indium                                   # 按 slug
packwiz curseforge install --category texture-packs unity           # 按 slug,并指定分类与游戏
packwiz curseforge install https://www.curseforge.com/minecraft/mc-mods/indium                  # 按模组页面 URL
packwiz curseforge install https://www.curseforge.com/minecraft/mc-mods/indium/files/3535202   # 按文件页面 URL
packwiz curseforge install Indium                                   # 按名称搜索
packwiz curseforge install --addon-id 459496 --file-id 3535202      # 其它办法都不行时,按 ID 指定

Modrinth(packwiz modrinth install)

packwiz modrinth install indium                                          # 按 slug
packwiz modrinth install https://modrinth.com/mod/indium                 # 按模组页面 URL
packwiz modrinth install https://modrinth.com/mod/indium/version/mfNlBb6U # 按文件页面 URL
packwiz modrinth install Fabric Rendering Sodium                         # 按名称搜索
packwiz modrinth install Orvt0mRa                                        # 按 ID

依赖自动处理:依赖项会自动识别——如果还没有安装,会提示你是否安装。packwiz 还会检查模组是否装错了 Minecraft 版本;如需允许更多版本,可在 pack.toml 中设置 acceptable-game-versions 字段(见下文)。例如在 pack.toml 底部加上:

[options]
acceptable-game-versions = ["1.16", "1.16.1", "1.16.2", "1.16.3", "1.16.4"]

💡 提示:curseforge 和 modrinth 命令存在多个别名以加快操作速度,例如 packwiz cf add 或 packwiz mr add!

4.2 内部文件(配置文件、脚本等)

整合包的配置文件可以直接放在 config 文件夹中(与 mods 文件夹同级),安装整合包时会被复制到游戏目录对应的 config 文件夹。这适用于任何文件(包括任务/脚本类文件)——把它放进整合包,安装时就会安装到游戏文件夹的对应位置。记得运行 packwiz refresh 让索引保持最新!

对于网上其他地方找不到的模组(例如自制的模组或分支),也可以直接把它们放进 mods 文件夹,与 .pw.toml 文件放在一起。不过这对 Git 不太友好(Git 不擅长处理大型二进制文件);你可以使用 Git LFS,或者把它们手动上传到别处并在整合包中引用(见下节)。

💡 提示:如果不想把某些文件包含进整合包,可以在整合包目录中创建一个名为 .packwizignore 的文件,其格式与 .gitignore 相同(参见官方示例整合包)。

4.3 其他外部文件(手动创建 .pw.toml)

如果外部文件/模组不是来自 CurseForge 或 Modrinth,就需要手动创建 .pw.toml 文件。以下是一个示例:

name = "Flamingo"
filename = "flamingo.jar"
side = "both"

[download]
url = "https://example.com/flamingo.jar"
# 很多工具可以帮你生成哈希,包括 7-zip 和 sha256sum
# packwiz 支持多种哈希:sha256、sha512、sha1、md5 等
hash-format = "sha256"
hash = "b22d1d8fe5752533954028172c9bf3ac01b57f40c82946a3e7b1eaff389e2b87"

你也可以为非模组文件(如资源包)创建这样的文件——只要使用 .pw.toml 扩展名,并运行 packwiz refresh,packwiz 就会知道该文件包含元数据。


5. 配合 Git 使用

在 Windows 上,行尾符转换(line ending conversion)会导致文件上传到 Git 后哈希发生变化,安装整合包时会得到“哈希无效”的错误。此时需要添加一个 .gitattributes 文件来禁用行尾符转换。

可以参考官方示例整合包(https://github.com/packwiz/packwiz-example-pack )中的 .gitignore 和 .gitattributes 示例文件。

如果 Git 中已经提交了已有文件,添加 .gitattributes 之后需要运行一次:

git add --renormalize .

来重置行尾符转换。


6. 使用 packwiz-installer 安装与分发

packwiz-installer(https://github.com/packwiz/packwiz-installer )是一个基于 Java 的安装器,可以实现 packwiz 整合包的自动安装和更新!

  • 可以配合 MultiMC / ATLauncher 作为**启动前任务(prelaunch task)**使用;
  • 也可以用于服务器启动脚本;
  • 支持仅单端模组(side-only mods)和带漂亮 GUI 的可选模组。

要分发 packwiz 整合包,首先需要搭建一个 Web 托管服务(如 Netlify、GitHub Pages、GitLab Pages),使整合包文件可以通过 HTTP/HTTPS 链接访问。

本地测试时,可以使用 packwiz serve 命令运行一个本地 HTTP 服务器,整合包会通过 http://localhost:8080/pack.toml 提供;它会在每次被请求时自动刷新索引,无需手动刷新!

6.1 为整合包创建 MultiMC 实例

将整合包作为 MultiMC 实例分发:

  1. 创建一个极简的 MultiMC 实例,设置好想要的模组加载器和 Minecraft 版本(建议同时设置内存分配覆盖);

  2. 从 https://github.com/packwiz/packwiz-installer-bootstrap/releases 下载 packwiz-installer-bootstrap,放入实例的 Minecraft 文件夹;

    说明:这个文件夹与 options.txt 在同一目录,MultiMC 根据系统不同将其称为 .minecraft 或 minecraft。

  3. 进入 Edit Instance → Settings → Custom commands,勾选 Custom Commands 复选框,在启动前命令(pre-launch command)栏粘贴以下命令(把 https://[your-server]/pack.toml 换成你的 pack.toml 实际托管地址):

"$INST_JAVA" -jar packwiz-installer-bootstrap.jar https://[your-server]/pack.toml
  1. 使用 Export Instance(导出实例)功能把整合包导出为 .zip 文件(可像整合包本身一样通过 Web 托管服务分发)。

用户安装时,只需 Add instance → Import from zip(添加实例 → 从 zip 导入),之后 packwiz-installer 会自动完成其余工作——每次启动游戏时保持整合包更新!

6.2 在服务器上使用整合包

可以使用 packwiz-installer 下载非客户端模组(side 为 both 或 server 的模组),例如:

java -jar packwiz-installer-bootstrap.jar -g -s server https://[your-server]/pack.toml
  • -g 标志:禁用 GUI;
  • -s server:只下载服务端模组。

另外,itzg 的 docker-minecraft-server(https://github.com/itzg/docker-minecraft-server )内置了对 packwiz 的支持:设置环境变量 PACKWIZ_URL 指向整合包的 TOML 文件,容器会自动引导 packwiz-installer 并安装/更新整合包。详见其文档:https://docker-minecraft-server.readthedocs.io/en/latest/mods-and-plugins/packwiz/


7. 发布到 CurseForge

导出 CurseForge 整合包只需运行:

packwiz curseforge export

这会在整合包文件夹中生成一个 .zip 文件,可以直接上传到 CurseForge!

需要注意的几点:

  • CurseForge 包格式不支持仅单端模组,所以 packwiz 无法创建服务端/客户端有差异的包。可以使用 --side 标志指定导出哪些模组——默认导出客户端包(包含 side 为 client 或 both 的模组)。
  • 缺少 CurseForge 元数据的模组(例如从 Modrinth 安装的模组)会被以 JAR 形式放入整合包 zip;这些模组需要 CurseForge 工作人员人工审核批准(参见 https://support.curseforge.com/en/support/solutions/articles/9000197913-non-curseforge-mods )。
  • 注意不要把不想要的文件打进包里(例如 packwiz 可执行文件、以及整合包 zip 本身)!
  • CurseForge 包格式不太支持可选模组。用户不会被询问可选模组,但如果它们默认是禁用的,那么在 CurseForge 启动器中就会保持禁用。

8. 发布到 Modrinth

导出 Modrinth 整合包同样简单,运行:

packwiz modrinth export

这会在整合包文件夹中生成一个 .mrpack 文件,可以直接上传到 Modrinth!

与 CurseForge 不同,Modrinth 包格式支持仅单端模组。导出时,packwiz 会根据 Modrinth 提供的信息或模组 mod.pw.toml 中指定的信息导出。官方 Modrinth 启动器会自动过滤服务端模组,并且该包也可以通过 mrpack-install(https://support.modrinth.com/en/articles/8802250-modpacks-on-modrinth )或 packwiz-installer 在服务器上使用。

需要注意的几点:

  • 缺少 Modrinth 元数据的模组(例如从 CurseForge 安装的模组)会被以 JAR 形式放入整合包 zip;作为整合包作者,你有责任确保拥有这些模组的分发许可(参见 https://support.modrinth.com/en/articles/8797527-obtaining-modpack-permissions )。
  • 注意不要把不想要的文件打进包里(例如 packwiz 可执行文件、以及整合包 zip 本身)!
  • 官方 Modrinth 应用不支持可选模组,用户不会被询问可选模组,而且官方启动器会自动安装全部可选模组(即使它们默认是禁用的!)。如果希望使用可选模组,可以使用 Prism Launcher 的 “Import Instance”(导入实例)功能安装导出的 .mrpack 文件。注意:如果用 Prism Launcher 的 “Modrinth” 区域安装整合包,同样不会提示可选模组。

9. 附加选项(pack.toml 的 [options] 段)

附加选项可以在 pack.toml 的 [options] 段中配置:

选项 说明
acceptable-game-versions 安装或更新模组时额外接受的 Minecraft 版本列表(见第 4 节“添加模组”)
meta-folder 新元数据文件的存放文件夹,默认为按分类生成的文件夹(mods、resourcepacks 等;分类未知时使用当前目录)
meta-folder-base 解析 meta-folder 的基准文件夹,默认为当前目录(这样可以把所有 mods 等放在子文件夹中,同时保留默认行为)
no-internal-hashes 设为 true 时,packwiz 不生成本地文件的哈希,以避免使用 git 等工具时的合并冲突和不一致哈希。该模式下可用 packwiz refresh --build 为 [packwiz-installer] 分发生成内部哈希
datapack-folder 添加数据包(datapack)的文件夹;与所用的数据包加载器模组相关,必须设置后才能添加数据包(未打包成模组的数据包)

mods-folder 已废弃,现在它是 meta-folder 的别名。


10. 命令参考

10.1 packwiz 主命令及全局选项

packwiz
A command line tool for creating Minecraft modpacks

全局选项(所有子命令都继承):

--cache string               packwiz 缓存已下载模组的目录(默认 "<用户目录>/.cache/packwiz/cache")
--config string              使用的配置文件(默认 "<用户目录>/.config/packwiz/.packwiz.toml")
-h, --help                   help for packwiz
--meta-folder string         新元数据文件添加到的文件夹,默认基于分类(mods、resourcepacks 等;分类未知时用当前目录)
--meta-folder-base string    解析 meta-folder 的基准文件夹,默认为当前目录(默认 ".")
--pack-file string           使用的整合包元数据文件(默认 "pack.toml")
-y, --yes                    所有提示都用默认值或 "yes" 接受(非交互模式)——可能在搜索结果中选择不想要的选项

子命令总览:

命令 作用
packwiz completion 为指定 shell 生成自动补全脚本(bash / fish / powershell / zsh)
packwiz curseforge 管理基于 CurseForge 的模组
packwiz init 初始化一个 packwiz 整合包
packwiz list 列出整合包中的所有模组
packwiz migrate 把 Minecraft 和加载器版本迁移到更新版本
packwiz modrinth 管理基于 Modrinth 的模组
packwiz pin 固定一个文件,使其不会被自动更新
packwiz refresh 刷新索引文件
packwiz remove 从整合包移除外部文件;等价于手动删除文件后运行 packwiz refresh
packwiz serve 运行本地开发服务器
packwiz settings 管理整合包设置
packwiz unpin 取消固定文件,使其可以接收更新
packwiz update 更新整合包中的一个(或全部)外部文件
packwiz url 从直接下载链接添加外部文件,用于 packwiz 不直接支持的网站
packwiz utils 用于管理 packwiz 本身的工具

10.2 packwiz init

初始化一个 packwiz 整合包。

packwiz init [flags]
选项 说明
--author string 整合包作者(省略则交互式定义)
--fabric-latest 自动选择最新版 Fabric 加载器
--fabric-version string 使用的 Fabric 加载器版本(省略则交互式定义)
--forge-latest 自动选择最新版 Forge
--forge-version string 使用的 Forge 版本(省略则交互式定义)
--index-file string 使用的索引文件(默认 "index.toml")
-l, --latest 自动选择最新版 Minecraft
--liteloader-latest 自动选择最新版 LiteLoader
--liteloader-version string 使用的 LiteLoader 版本(省略则交互式定义)
--mc-version string 使用的 Minecraft 版本(省略则交互式定义)
--modloader string 使用的模组加载器(省略则交互式定义)
--name string 整合包名称(省略则交互式定义)
--neoforge-latest 自动选择最新版 NeoForge
--neoforge-version string 使用的 NeoForge 版本(省略则交互式定义)
--quilt-latest 自动选择最新版 Quilt 加载器
--quilt-version string 使用的 Quilt 加载器版本(省略则交互式定义)
-r, --reinit 如果包文件已存在则重新创建,而不是退出
-s, --snapshot 与 --latest 一起使用时选择最新快照版
--version string 整合包版本(省略则交互式定义)

10.3 packwiz list

列出整合包中的所有模组。

packwiz list [flags]
选项 说明
-s, --side string 按 side 过滤模组(例如 client 或 server)
-v, --version 打印名称和版本

10.4 packwiz refresh

刷新索引文件。

packwiz refresh [flags]
选项 说明
--build 仅在 no-internal-hashes 模式下有效:为通过 packwiz-installer 分发生成内部哈希

10.5 packwiz serve

运行本地开发服务器——运行一个本地 HTTP 服务器用于开发,被查询时自动刷新索引。

packwiz serve [flags]
选项 说明
--basic 禁用刷新,并允许目录中的所有文件(而不只是索引中列出的文件)
-p, --port int 服务器运行的端口(默认 8080)
-r, --refresh 自动刷新索引文件(默认 true)

10.6 packwiz update

更新整合包中的一个(或全部)外部文件。

packwiz update [name] [flags]
选项 说明
-a, --all 更新所有外部文件

10.7 packwiz remove / pin / unpin

packwiz remove [flags]     # 从整合包移除外部文件;等价于手动删除文件后运行 packwiz refresh
packwiz pin [flags]        # 固定一个文件,使其不会被自动更新
packwiz unpin [flags]      # 取消固定文件,使其可以接收更新

10.8 packwiz settings

管理整合包设置。

packwiz settings [flags]

子命令:

  • packwiz settings acceptable-versions:管理整合包可接受的 Minecraft 版本,必须是逗号分隔的版本列表,例如 1.16.3,1.16.4,1.16.5。
packwiz settings acceptable-versions [flags]
选项 说明
-a, --add 向列表中添加一个版本
-r, --remove 从列表中移除一个版本

10.9 packwiz migrate

把 Minecraft 和加载器版本迁移到更新版本。

packwiz migrate loader [version|latest|recommended] [flags]   # 把模组加载器版本迁移到更新版本
packwiz migrate minecraft [version] [flags]                   # 把 Minecraft 版本迁移到更新版本

10.10 packwiz url add

从直接下载链接添加外部文件,用于 packwiz 不直接支持的网站。

packwiz url add [name] [url] [flags]
选项 说明
--force 即使下载 URL 已被 packwiz 的其它命令支持(那些命令可能支持依赖和更新),也强制添加
--meta-name string 创建的元数据文件使用的文件名(默认根据你提供的名称生成)

10.11 packwiz curseforge(管理基于 CurseForge 的模组)

packwiz curseforge [flags]

子命令:

  • packwiz curseforge add [URL|slug|search] [flags]:从 CurseForge URL、slug、ID 或搜索添加项目。
选项 说明
--addon-id uint32 使用的 CurseForge 项目 ID
--category string 添加文件时使用的分类(URL 中存储的 slug);URL 中的分类优先级更高
--file-id uint32 使用的 CurseForge 文件 ID
--game string 添加文件时使用的游戏(URL 中存储的 slug);URL 中的游戏优先级更高(默认 "minecraft")
  • packwiz curseforge detect:检测 mods 文件夹中的 .jar 文件(实验性)。会自动检测可通过 CurseForge 获取的文件,并把它们改为从 CurseForge 下载。
  • packwiz curseforge export:把当前整合包导出为 CurseForge 的 .zip。
选项 说明
-o, --output string 导出整合包的目标文件
-s, --side string 导出模组的 side(默认 "client")
  • packwiz curseforge import [modpack path]:从下载好的整合包 zip 或已安装的元数据 json 文件导入 CurseForge 整合包。
  • packwiz curseforge open [name]:在浏览器中打开 CurseForge 文件的项目页面。

10.12 packwiz modrinth(管理基于 Modrinth 的模组)

packwiz modrinth [flags]

子命令:

  • packwiz modrinth add [URL|slug|search] [flags]:从 Modrinth URL、slug/项目 ID 或搜索添加项目。
选项 说明
--project-id string 使用的 Modrinth 项目 ID
--version-filename string 使用的 Modrinth 版本文件名
--version-id string 使用的 Modrinth 版本 ID
  • packwiz modrinth export:把当前整合包导出为 Modrinth 的 .mrpack。
选项 说明
-o, --output string 导出整合包的目标文件
--restrictDomains 将域名限制为 modrinth.com 允许的域名(默认 true)

10.13 packwiz utils markdown

生成 Markdown 文档(你现在正在读的这类文档就是这么生成的)。

packwiz utils markdown [flags]
选项 说明
--dir string 保存文档的目标目录(默认 ".")

10.14 packwiz completion

为指定 shell 生成自动补全脚本,支持:bash、fish、powershell、zsh。

packwiz completion [bash|fish|powershell|zsh]

11. 包格式详解

11.1 pack.toml(整合包主文件)

pack.toml 是 packwiz 整合包的主文件。这是第一个被加载的文件,以便整合包下载器下载整合包中的所有文件。

属性表

属性 类型 必填 说明
index object 是 本整合包索引文件的信息
name string 是 整合包名称,可在用户界面中显示以标识整合包;不要求唯一
pack-format string 是 标识包格式及其版本的版本字符串。当前格式使用 1.1.0。未定义时默认为 "packwiz:1.0.0"(向后兼容旧整合包)。若已定义:所有消费者必须以 "packwiz:" 开头才能加载;后半部分必须是符合 https://semver.org/spec/v2.0.0.html 的有效 semver;主版本号大于其支持版本时必须拒绝加载;次版本号更大时可以建议消费者更新自身;包工具支持更新版本时应建议并支持迁移
versions object 是 本整合包使用的组件版本——通常指 Minecraft 和模组加载器。存在某个组件即表示应安装它;这些值也可用于工具判断应安装哪些版本的模组
author string 否 整合包作者。导出为 CurseForge 包格式时会输出,也可在用户界面显示
description string 否 整合包的简短描述。导出为 Modrinth 包格式时会输出,目前工具/安装器未在其它地方使用
version string 否 整合包版本。导出为 CurseForge 包格式时会输出,目前工具/安装器未在其它地方使用。不得用它判断整合包是否过时

index 对象

关于整合包索引文件的信息。

属性 类型 必填 说明
file string 是 索引文件的路径。使用正斜杠的相对路径;不得指向包根目录之外的文件;不应包含常见操作系统受限的字符或文件名。实现必须支持特殊字符(包括 URL 中百分号编码的字符,如空格和方括号),必须防御路径穿越攻击并手动校验路径
hash-format string 是 索引文件哈希的哈希格式。用于判断文件是否有效。实现必须支持以下取值:sha256、sha512、sha1、md5、murmur2
hash string 是 索引文件的哈希字符串。二进制哈希应以十六进制存储,解析时忽略大小写。数字哈希(如 Murmur2)也应存为字符串以保证数值保留正确

versions 对象

本整合包使用的组件版本——通常指 Minecraft 和模组加载器。

属性 类型 必填 说明
minecraft string 是 本整合包使用的 Minecraft 版本,应采用 version.json 文件使用的格式
fabric string 否 本整合包使用的 Fabric 加载器版本
forge string 否 本整合包使用的 Forge 版本,不得包含 Minecraft 版本前缀
liteloader string 否 本整合包使用的 LiteLoader 版本
quilt string 否 本整合包使用的 Quilt 加载器版本

11.2 index.toml(索引文件)

index.toml 是整合包的索引文件,保存对整合包中每个待下载文件的引用。

属性表

属性 类型 必填 说明
hash-format string 是 索引中每个文件的默认哈希格式。可能取值:sha256、sha512、sha1、md5、murmur2
files object [] 否 本索引中列出的文件。未定义时默认为空列表

files 数组中的单个文件

属性 类型 必填 说明
file string 是 要下载的文件路径,相对于该索引文件。使用正斜杠的相对路径;不得指向包根目录之外;不应包含受限字符/文件名;实现必须支持特殊字符、防御路径穿越
hash string 是 指定文件的哈希字符串(十六进制,解析时忽略大小写)
alias string 否 下载该文件时使用的名称,替代路径中指定的文件名。与 metafile 不兼容,且可能支持不佳
hash-format string 否 指定文件的哈希格式。默认使用索引中指定的哈希格式——如果与索引哈希格式相同,建议移除该值以节省空间
metafile boolean 否 为 true 时表示该条目指向一个引用包外文件的 .toml 元数据文件
preserve boolean 否 为 true 时,如果文件已存在则不覆盖,以保留用户所做的修改

11.3 mod.pw.toml(元数据文件)

一个通过 URL 引用外部文件的元数据文件。它可以实现仅单端模组(side-only mods)、可选模组(optional mods),并存储用于从 Modrinth 和 CurseForge 查找更新的元数据。这里大量使用 “mod”(模组)一词,但对任何文件都适用。

属性表

属性 类型 必填 说明
download object 是 如何下载这个模组的信息
filename string 是 模组文件的目标路径,相对于本文件。使用正斜杠的相对路径;不得指向包根目录之外;不应包含受限字符/文件名;实现必须支持特殊字符、防御路径穿越
name string 是 模组名称,可在用户界面中显示;不要求唯一(但重复可能造成混淆)
option object 否 该模组可选状态的信息。缺省表示模组不是可选的
side string 否 该模组应安装到哪一侧。server 适用于专用服务器,client 适用于客户端(及内置服务器),both 适用于所有安装。可能取值:both、client、server
update object 否 工具如何更新该模组下载信息。若不存在或没有定义更新源,模组不会自动更新。若有多个更新源,将选择其中一个——选择哪个没有定义,取决于工具实现(可能不确定,不要依赖会选到某一个)

download 对象

属性 类型 必填 说明
hash-format string 是 指定文件的哈希格式。可能取值:sha256、sha512、sha1、md5、murmur2
hash string 是 指定文件的哈希字符串(十六进制,解析时忽略大小写)
url string 是 下载模组的 URL。必须是符合 RFC 3986 的绝对 URI。因历史实现 bug,实现可能需要更宽容地接受路径中的保留字符。只需支持 HTTP/HTTPS 协议,不应使用其他协议

option 对象

属性 类型 必填 说明
optional boolean 是 模组是否可选。如果想保留描述但让模组变为必选,可设为 false
default boolean 否 为 true 时模组默认启用;为 false 时默认禁用。如果包格式不支持可选模组但支持禁用模组,则默认禁用的模组会被禁用
description string 否 用户选择可选模组时显示的描述,用于解释用户应/不应启用该模组的原因

update 对象

属性 类型 必填 说明
curseforge object 否 用于更新从 CurseForge 下载的模组的更新源
modrinth object 否 用于更新从 Modrinth 下载的模组的更新源

curseforge(更新源)

属性 类型 必填 说明
file-id number 是 该模组文件的唯一文件 ID(整数),可用于获取与该模组相关的更多元数据
project-id number 是 该模组的唯一项目 ID(整数)。更新时会获取该项目 ID 最新且有效(正确的 Minecraft 版本、发布渠道、模组加载器等)的文件

modrinth(更新源)

属性 类型 必填 说明
mod-id string 是 该模组的唯一模组 ID(字符串)。更新时会获取该项目最新且有效的文件
version string 是 该文件的唯一版本 ID(字符串),可用于获取与该模组相关的更多元数据

12. 命令速查表(Cheat Sheet)

命令 作用
packwiz init 在当前文件夹创建整合包
packwiz curseforge import [zip 路径] 导入 CurseForge 整合包
packwiz refresh 更新整合包索引
packwiz curseforge install [模组] 从 CurseForge 安装模组
packwiz modrinth install [模组] 从 Modrinth 安装模组
packwiz update [模组] 更新某个模组
packwiz update --all 更新整合包中所有模组
packwiz curseforge export 导出为 CurseForge 启动器支持的格式
packwiz modrinth export 导出为 Modrinth 支持的格式
packwiz curseforge detect 检测可从 CurseForge 下载的文件,改为从 CurseForge 获取
packwiz cf add / packwiz mr add 快速别名:从 CurseForge / Modrinth 添加模组
packwiz list 列出整合包中的模组
packwiz remove 移除模组
packwiz pin / packwiz unpin 固定 / 取消固定文件(防止 / 允许自动更新)
packwiz serve 本地测试服务器(默认 http://localhost:8080/pack.toml)
packwiz settings acceptable-versions 管理可接受的 Minecraft 版本
packwiz migrate loader / packwiz migrate minecraft 迁移加载器 / Minecraft 版本
packwiz url add [名称] [URL] 从直接下载链接添加文件
<命令> --help 查看任何命令的详细信息!

附:相关链接汇总

⚠️ **GitHub.com Fallback** ⚠️