清单文件

From Minecraft基岩版开发Wiki

清单文件(Manifest)是 Minecraft 用于判定某个文件夹是否为一个附加包的文件,该文件中储存了这个包的一些基本配置信息,如包类型、包版本、描述、UUID 等等。Minecraft 会在运行时尝试加载包储存路径下所有子文件夹中的清单文件,若含有且成功加载,则该文件夹会被游戏判定为一个包。

清单文件以JSON文件的形式被放置于附加包的根目录下,文件名必须manifest.json

数据结构[edit]

属性名称 描述
format_version 定义了清单的当前版本。除非有需要,否则请勿更改。
header 清单的头部对象,用于定义包的一些基本信息。
属性名称 数据类型 描述
base_game_version Vector[ a, b, c] 世界模板所需的基本游戏版本,格式为[主版本,副版本,修订版](x.x.x)。游戏将据此决定要使用的游戏资源和行为包版本。
description String 关于附加包的简短说明。它会出现在游戏中附加包名称的下方,建议保持在1行以内。
name String 该附加包的名称。
lock_template_options Boolean 用于阻止玩家修改世界的选项。(任何世界模板都需要此选项。)
pack_scope String 用于限制附加包的显示范围,填写为 world 可以仅在世界设置界面中显示附加包而不会在全局资源中显示。
uuid String 一种特殊的标识符,是一种区分附加包的好方法。建议使用uuid生成器来生成以保证其独特性。
version Vector[ a, b, c] 附加包的版本号,格式为[主版本,副版本,修订版](x.x.x)导入同一个附加包时会用到,如果新的附加包版本更高,那么就替换为新版本;如果新的附加包版本低于旧版,则忽略。
min_engine_version Vector[ a, b, c] 此为能使用本附加包的 minecraft 的最低版本,可以通过它确定附加包是否能向下兼容。
modules 描述了附加包的模块。
属性名称 数据类型 描述
uuid String 一种特殊的标识符,格式同 header 。注意,每个模块的的 uuid 都应该各不相同。
description String 关于此模块的简短说明,建议保持在 1 行以内。
version Vector[ a, b, c] 此模块的版本号,格式同 header
type String 模块的类型,一般填 data
dependencies 描述了此附加包所依赖的附加包,如果此包不存在,则会出现错误。
属性名称 数据类型 描述
uuid String 所依赖的附加包中的唯一标识符,它应该和所依赖的附加包 header 中的 uuid 完全一致。
version Vector[ a, b, c] 你所依赖的附加包的版本。注意,此版本应该和所依赖的附加包中的清单文件匹配。
capabilities 用于定义附加包的功能范围。
属性名称 描述
experimental_custom_ui 启用实验性自定义UI功能。
chemistry 启用教育版功能。
raytraced 启用光线追踪功能。
metadata 保存了附加包的有关资料信息。
属性名称 数据类型 描述
authors Array 附加包作者的名字。
license String 附加包的版权证书。
url String 附加包的网站主页。

模块类型[edit]

清单文件的模块中,type属性的值决定了此模块的类型。不同类型的模块拥有着不同的标识能力,目前主要分为两类,一是用于标识附加包的类型,不同类型的附加包在加载时会被游戏放置在不同的文件目录下;二是用于标识该附加包所启用的一些特殊功能。在导入附加包时,游戏会获取该包拥有的所有模块,根据不同类型的模块对附加包的类型及需要启用的一些特殊功能进行判定,并做出相应操作。下表列出了type可填的值。

包类型 描述
资源包 "resources" 拥有该模块的附加包会被游戏判定为资源包,该包会被放在数据存储目录的resource_packs文件夹中,并显示在游戏全局资源或资源包菜单中。在加载该包时,游戏会以资源包的读取方式来读取该包。
行为包 "data" 拥有该模块的附加包会被游戏判定为行为包,该包会被放在数据存储目录的behavior_packs文件夹中,并显示在游戏行为包菜单中。在加载该包时,游戏会以行为包的读取方式来读取该包。
皮肤包 "skin_pack" 拥有该模块的附加包会被游戏判定为皮肤包,该包会被放在数据存储目录的skin_packs文件夹中,并显示在角色创建器的“经典皮肤”的“已拥有”一栏中,玩家可在游戏中使用皮肤包中的皮肤。在加载该包时,游戏会以皮肤包的读取方式来读取该包。
世界模板 "world_template" 拥有该模块的附加包会被游戏判定为世界模板包,该包会被放在数据存储目录的world_templates文件夹中,并显示在游戏世界模板菜单中。加载该包时,游戏会以世界模板的读取方式来读取该包。此类型包的清单文件中可以包含lock_template_options属性。
- "javascript" 拥有该模块的附加包,可启用官方提供的GameTest框架API,这是区别于脚本引擎的一套脚本API,由该模块中entry属性决定游戏执行脚本时的入口文件。一般与data模块共用。
- "client_data" 拥有该模块的附加包可启用官方提供的脚本引擎API。一般与data模块共用。
- "interface" 添加该模块的附加包在装载进世界后不可卸下。
- "persona_piece" 拥有该模块的附加包可用于定义外观部件

示例[edit]

行为包

{
  "format_version": 1,
  "header": {
    "description": "Example behavior pack",
    "name": "Vanilla Behavior Pack",
    "uuid": "ee649bcf-256c-4013-9068-6a802b89d756",
    "version": [1, 0, 0]
  },
  "modules": [
    {
      "description": "Example behavior pack module",
      "type": "data",
      "uuid": "fa6e90c8-c925-460f-8155-c8a60b753caa",
      "version": [1, 0, 0]
    }
  ],
  "dependencies": [
    {
      "uuid": "66c6e9a8-3093-462a-9c36-dbb052165822",
      "version": [1, 0, 0]
    }
  ]
}

资源包

{
  "format_version": 1,
  "header": {
    "description": "Example resource pack",
   "name": "Vanilla Resource Pack",
   "uuid": "66c6e9a8-3093-462a-9c36-dbb052165822",
   "version": [1, 0, 0],
   "min_engine_version": [1, 2, 6]
  },
  "modules": [
    {
      "description": "Example resource pack",
      "type": "resources",
      "uuid": "743f6949-53be-44b6-b326-398005028819",
      "version": [1, 0, 0]
    }
  ]
}

世界模板

{
  "format_version": 1,
  "header": {
    "name": "Example world",
    "uuid": "d3ce13f3-0a18-4286-aa91-3e82792d23f8",
    "lock_template_options": true
    "version": [1, 0, 0]
  },
  "modules": [
    {
      "type": "world_template",
      "uuid": "f7785f25-7583-42d1-895d-fce59df6b474",
      "version": [1, 0, 0]
    }
  ]
}

皮肤包

{
  "format_version": 1,
  "header": {
    "name": "Persona",
    "uuid": "86efe7ee-a28e-4d6c-9892-8a0270257554",
    "version": [1, 0, 0]
  },
  "modules": [
    {
      "type": "skin_pack",
      "uuid": "e204cca7-36e6-4c8a-8872-8689ad16ded5",
      "version": [1, 0, 0]
    }
  ]
}