Skip to content

如何打包数据包

本章旨在帮助数据包作者了解如何正确打包数据包,以便在 HMCL 中获得最佳的安装和更新体验。
我们强烈推荐使用 多数据包格式,因为它能无缝处理数据包的更新、模块化和资源包捆绑,极大地简化了用户的管理流程。

多数据包(Multi-Data Pack)格式

当你的项目包含以下任意一种情况时,都应使用此格式:
需要频繁更新:此格式能让用户通过导入新版压缩包直接覆盖旧版,实现无感更新。
模块化设计:包含多个独立的数据包,允许用户按需启用。
捆绑资源包:数据包需要配套的资源包(材质、声音等)才能正常工作。

工作原理

HMCL 在导入多数据包格式的压缩包时,会执行以下更新逻辑:

  1. 检查冲突:启动器会检查世界中已有的数据包。
  2. 移除旧版:如果世界中存在与压缩包内 datapacks 文件夹下 同名 的数据包文件夹,HMCL 会将其 自动删除
  3. 安装新版:将压缩包内 datapacks 文件夹下的所有内容解压并安装到世界数据包目录中。

这个“先删后装”的机制确保了版本能被干净地覆盖,避免了文件残留和冲突。

文件结构

一个多数据包压缩包(必须是 .zip 格式)应具有以下结构:

text
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 格式)的结构就是数据包本身的结构:

text
my-single-datapack.zip
├───pack.mcmeta
└───data/
    └───...

这种方式不利于更新。因为 HMCL 只是复制文件,如果新旧压缩包文件名不同(例如 v1.0.zipv1.1.zip),用户导入新版后,旧版文件会继续存在,可能导致冲突。用户需要手动删除旧版文件。

总结与对比

特性多数据包格式 (推荐)单数据包格式
更新机制自动覆盖,导入新包即可完成更新手动管理,需用户自行删除旧版文件
模块化支持优秀,可在单个压缩包内包含多个可选模块不支持,一个压缩包仅代表一个数据包
资源包捆绑支持,可内置 resources.zip不支持
适用场景绝大多数情况,特别是需要更新和模块化的项目极其简单的、一次性使用或无需更新的微型数据包

为了提供最佳的用户体验,请 始终优先选择多数据包格式 进行分发。

"Minecraft" is a trademark of Microsoft Corporation. This document is not affiliated with Microsoft Corporation.