如何打包数据包
本章旨在帮助数据包作者了解如何正确打包数据包,以便在 HMCL 中获得最佳的安装和更新体验。
我们强烈推荐使用 多数据包格式,因为它能无缝处理数据包的更新、模块化和资源包捆绑,极大地简化了用户的管理流程。
多数据包(Multi-Data Pack)格式
当你的项目包含以下任意一种情况时,都应使用此格式:
需要频繁更新:此格式能让用户通过导入新版压缩包直接覆盖旧版,实现无感更新。
模块化设计:包含多个独立的数据包,允许用户按需启用。
捆绑资源包:数据包需要配套的资源包(材质、声音等)才能正常工作。
工作原理
HMCL 在导入多数据包格式的压缩包时,会执行以下更新逻辑:
- 检查冲突:启动器会检查世界中已有的数据包。
- 移除旧版:如果世界中存在与压缩包内
datapacks文件夹下 同名 的数据包文件夹,HMCL 会将其 自动删除。 - 安装新版:将压缩包内
datapacks文件夹下的所有内容解压并安装到世界数据包目录中。
这个“先删后装”的机制确保了版本能被干净地覆盖,避免了文件残留和冲突。
文件结构
一个多数据包压缩包(必须是 .zip 格式)应具有以下结构:
my-datapack-collection.zip
├───datapacks/
| ├───module_a/ # 这是一个标准的数据包
| ├───module_b/ # 这是另一个数据包
| └───core_pack/ # 核心数据包
└───resources.zip # [可选] 捆绑的资源包
└───assets/
└───...datapacks/:此文件夹的结构与游戏存档 saves/<世界名>/datapacks/ 完全一致。你可以直接将你开发环境中的 datapacks 文件夹打包。resources.zip:这是一个可选的资源包文件,其内部结构与普通资源包(或存档 saves/<世界名>/resources.zip)完全一致。导入时,HMCL 会自动将此资源包与世界自带的资源包合并,若有同名文件,新文件将 覆盖 旧文件。
如果你的服务器使用了捆绑资源包的数据包,请在服务端完成上述合并操作。之后,玩家只需通过服务器的资源包推送功能下载即可,无需手动安装。
单数据包(Single-Data Pack)格式
如果你的数据包非常简单,只包含一个模块且不需要任何资源包,那么可以考虑使用此格式。
HMCL 会直接将这个 .zip 压缩包 原封不动地 复制到世界的 datapacks 文件夹中。由于原版 Minecraft 支持直接读取压缩包形式的数据包,因此无需解压。
一个单数据包压缩包(必须是 .zip 格式)的结构就是数据包本身的结构:
my-single-datapack.zip
├───pack.mcmeta
└───data/
└───...这种方式不利于更新。因为 HMCL 只是复制文件,如果新旧压缩包文件名不同(例如
v1.0.zip和v1.1.zip),用户导入新版后,旧版文件会继续存在,可能导致冲突。用户需要手动删除旧版文件。
总结与对比
| 特性 | 多数据包格式 (推荐) | 单数据包格式 |
|---|---|---|
| 更新机制 | 自动覆盖,导入新包即可完成更新 | 手动管理,需用户自行删除旧版文件 |
| 模块化支持 | 优秀,可在单个压缩包内包含多个可选模块 | 不支持,一个压缩包仅代表一个数据包 |
| 资源包捆绑 | 支持,可内置 resources.zip | 不支持 |
| 适用场景 | 绝大多数情况,特别是需要更新和模块化的项目 | 极其简单的、一次性使用或无需更新的微型数据包 |
为了提供最佳的用户体验,请 始终优先选择多数据包格式 进行分发。