清单文件¶
清单文件(Manifest File)是每个附加包中最重要的文件,文件名必须为manifest.json,位于附加包的根目录。清单文件以JSON格式编写,用于向游戏引擎声明附加包的基本信息、类型、版本、依赖关系等元数据。游戏在导入和加载附加包时,首先读取并验证清单文件。
格式版本¶
清单文件通过顶层的format_version字段声明其格式版本。目前支持的格式版本包括:
- 1:最早期的清单文件格式,主要用于皮肤包。
- 2:当前主流使用的格式版本,适用于资源包、行为包和世界模板。
结构¶
清单文件的主要结构如下:
UUID¶
UUID(Universally Unique Identifier)是清单文件中用于唯一标识附加包和模块的通用唯一标识符。UUID的标准格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,由32位十六进制数字和4个连字符组成。
每个附加包的标头UUID必须全局唯一,两个不同的附加包不应使用相同的标头UUID。同一附加包中的不同模块也应各自拥有独立的UUID。UUID可以通过在线生成器或开发工具生成。
模块类型¶
modules数组中每个模块的type字段定义了模块的类型,决定了游戏引擎如何处理附加包中的内容:
| 类型 | 描述 |
|---|---|
resources | 资源包模块,包含纹理、模型、音效等客户端资源 |
data | 行为包模块,包含实体行为、配方、战利品表等服务端数据 |
world_template | 世界模板模块 |
script | 脚本模块,包含JavaScript脚本代码 |
client_data | 客户端数据模块 |
依赖声明¶
dependencies数组用于声明附加包所依赖的其他包或脚本API模块。依赖可以通过UUID指向另一个附加包,也可以通过module_name指向一个内置的脚本API模块(如@minecraft/server)。
游戏在加载附加包时会检查所有声明的依赖是否满足。如果某个依赖的附加包未安装或版本不匹配,游戏可能会拒绝加载当前附加包或产生警告。
功能声明¶
capabilities数组用于声明附加包需要的特殊功能支持。如果在创建世界时未开启对应的功能开关,声明了该功能的附加包可能无法正常工作。可用的功能包括: