跳转至

清单文件

清单文件(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数组用于声明附加包需要的特殊功能支持。如果在创建世界时未开启对应的功能开关,声明了该功能的附加包可能无法正常工作。可用的功能包括:

  • chemistry:化学功能。
  • editorExtension:编辑器扩展功能。
  • experimental_custom_ui:实验性自定义UI
  • raytraced:光线追踪支持。