清单文件
清单文件为附加包根目录中的manifest.json
,它描述附加包的基本信息,决定 Minecraft 如何识别这个附加包的功能。
本文更新时间
本文于 2025 年 5 月 23 日更新,中国版最新版本为 1.20.50,国际版最新版本为 1.21.80。
参数
标记示意
参数左侧的图案决定该参数的数据类型。这个图案机制在 Minecraft Wiki 中也广泛应用。分别如下:
:代表一个对象。例如:
param
代表"param"
的值是一个对象{...}
。:代表一个数组。例如:
param
代表"param"
的值是一个数组[...]
。- 若在数组中声明了数字,则代表对应索引的类型。例如
0
,代表索引0
的类型是数组。
- 若在数组中声明了数字,则代表对应索引的类型。例如
:代表一个整数。例如:
param
代表"param"
的值是整数。:代表一个浮点数。例如:
param
代表"param"
的值是浮点数。:代表一个字符串。例如:
param
代表"param"
的值是字符串。:代表一个布尔值。例如:
param
代表"param"
的值是布尔值。
关于可选参数和必选参数:
- 参数右上角标星号的,且参数本身被粗体表示的,代表该参数为必选参数。例如:
param
*。 - 参数右上角不标星号的,代表该参数为可选参数。例如:
param
。- 若可选参数下存在必选参数,则代表在指定该可选参数后必须指定这个(些)必选参数。
:根对象
format_version
*:清单文件的格式版本。强烈建议为2
,非必要不要改动。header
*:包的公开基本信息,包括包名、包描述、包 UUID 等。name
*:包的名称。description
:包的描述。建议简短而清晰,不要写得过长。uuid
*:包的 UUID。表示包的唯一识别码,是 Minecraft 识别包与其他包不同的关键信息,应与其他包区分开。
格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
,其中每一个x
均为十六进制数(0-9
或a-f
)。建议使用随机 UUID 生成器以有效地与其他包区分开来。version
*:包的版本。0
*:代表主版本号。通常主版本号应为1
或更高的值。1
*:代表次版本号。2
*:代表修订版本号。
version
*:(替代写法)包的版本。应为 SemVer 约定的版本格式的字符串。min_engine_version
*:(仅限行为包和资源包有意义)包的最小引擎版本。规定使用此附加包至少需要使用何种版本的 Minecraft,并决定了游戏对包的向下兼容能力。
format_version
会影响该值的解析。详见清单文件 - 基岩版开发文档。0
*:写为1
,代表 Minecraft 的主版本号。1
*:代表 Minecraft 的次版本号。2
*:代表 Minecraft 的修订版本号。
pack_scope
:(仅限资源包有意义)包是否在全局可用,若为"world"
则仅限地图内可用。仅限填写为"world"
或"any"
,默认为"any"
。base_game_version
*:(仅限地图模板有意义)包的基游戏版本。规定使用此附加包使用何版本下的 Minecraft 的特性。通常用于给地图“锁版本”。0
*:写为1
,代表 Minecraft 的主版本号。1
*:代表 Minecraft 的次版本号。2
*:代表 Minecraft 的修订版本号。
allow_random_seed
:包是否在每次生成地图的时候随机选择种子,或允许玩家自定义种子。lock_template_options
*:(仅限地图模板有意义)包是否锁定地图设置,阻止玩家更改。
modules
*:包会应用的功能模块。至少应指定一个模块。*:指代一个或多个模块。
type
*:模块会使用的功能。仅限填写为下面的值,并规定包为对应的类型。type
的值包类型 "data"
行为包 "resources"
资源包 "world_template"
地图模板 "skin_pack"
皮肤包 "script"
会使用到脚本功能,通常结合 data
模块使用uuid
*:模块的 UUID。格式要求同header
。不宜和header
的 UUID 相同。version
*:模块的版本。0
*:代表主版本号。通常主版本号应为1
或更高的值。1
*:代表次版本号。2
*:代表修订版本号。
description
:模块的描述。language
:(仅限使用script
类型的模块时有意义)模块使用的编程语言。仅限填写为"javascript"
。entry
:(仅限使用script
类型的模块时有意义)脚本的入口文件。
dependencies
:包依赖的其他包。只有这些包安装后,本包才能正常启用。指定该字段时,至少应指定一个依赖的附加包或脚本模块。:指代要依赖的附加包。依赖其他附加包时接受以下参数。
uuid
*:依赖包的 UUID。为依赖包在header
中所定义的 UUID。version
*:依赖包的版本。为依赖包在header
中所定义的版本。0
*:代表主版本号。通常主版本号应为1
或更高的值。1
*:代表次版本号。2
*:代表修订版本号。
version
*:(替代写法)包的版本。应为 SemVer 约定的版本格式的字符串。
:指代要依赖的脚本模块。依赖脚本模块时接受以下参数。
module_name
*:调用的脚本模块。例如:@minecraft/server
。version
*:调用的脚本模块所使用的版本,应为 SemVer 约定的版本格式的字符串。
metadata
:包有关的元数据(例如作者、许可信息等)。authors
:本包的作者。*:作者昵称。
license
:本包采用的协议。generated_with
:本包的清单文件等文件使用哪个(些)软件自动生成。(软件名)
*:使用的软件版本。通常由该软件自行生成。*:指代使用到的软件版本。通常由该软件自行生成。
product_type
:本包的类型。设置此参数时,行为包不再影响成就的获取。仅限填写为"addon"
。url
:网站。通常链接到作者的个人网站或公司的公司网站。
subpack
:包的子包设置。玩家可以通过设置包以应用不同的设定。运用于资源包1。:子包设置
folder_name
*:子包的包名,Minecraft 将会应用RP/subpacks/(folder_name)
下的文件。name
*:子包的设置名,Minecraft 将会在资源包设置中显示该设置的名称,以使玩家了解其正在实用的设置。memory_tier
:子包的内存需求,在选中此设置后将需要额外分配的内存。每一级都需要额外的 256MB 的内存。
capabilities
:包将会额外影响的 Minecraft 游戏特性。*:包会影响的特性。仅限填写为下面的值,并规定包影响的游戏特性。
允许值 包影响的特性 "chemistry"
添加、移除或影响化学用品的行为。 "editorExtension"
会影响 Minecraft 编辑器的插件。 "experimental_custom_ui"
包可以使用 HTML 文件来创建、使用或修改自定义 UI。 "raytraced"
包使用光线追踪的功能,并可能使用自定义着色器。
示例
行为包清单文件模板(最简)
manifest.json
{
"format_version": 2,
"header": {
"name": "(包名)",
"description": "(包描述)",
"uuid": "(uuid1)",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 20, 50 ]
},
"modules": [
{
"type": "data",
"uuid": "(uuid2)",
"version": [ 1, 0, 0 ]
}
]
}
资源包清单文件模板(最简)
manifest.json
{
"format_version": 2,
"header": {
"name": "(包名)",
"description": "(包描述)",
"uuid": "(uuid1)",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 20, 50 ]
},
"modules": [
{
"type": "resources",
"uuid": "(uuid2)",
"version": [ 1, 0, 0 ]
}
]
}
地图模板清单文件模板(最简)
manifest.json
{
"format_version": 2,
"header": {
"name": "(包名)",
"description": "(包描述)",
"uuid": "(uuid1)",
"version": [ 1, 0, 0 ],
"base_game_version": [ 1, 20, 50 ],
"lock_template_options": true
},
"modules": [
{
"type": "world_template",
"uuid": "(uuid2)",
"version": [ 1, 0, 0 ]
}
]
}
示例:启用了依赖项的行为包清单文件
manifest.json
{
"format_version": 2,
"header": {
"name": "依赖项测试包",
"description": "一个启用了依赖其他资源包的行为包",
"uuid": "e7a3f199-6505-4398-baf7-8ba15bca441a",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 20, 50 ]
},
"modules": [
{
"type": "data",
"uuid": "fd6e3abd-7160-439b-85ba-b208914c78ca",
"version": [ 1, 0, 0 ]
}
],
"dependencies": [
{
"uuid": "714dc36a-1308-4d94-a67c-2c60cb580862",
"version": [ 1, 0, 0 ]
}
]
}
示例:启用了脚本的行为包清单文件
manifest.json
{
"format_version": 2,
"header": {
"name": "脚本测试包",
"description": "一个启用了脚本的行为包",
"uuid": "cbf56a50-81b1-4835-b1f9-bfdbc37d0dd7",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 20, 50 ]
},
"modules": [
{
"type": "data",
"uuid": "47eaf802-9d96-4537-b320-09908df6557d",
"version": [ 1, 0, 0 ]
},
{
"type": "script",
"uuid": "b915ee94-62b9-453f-8571-9715b022bb04",
"version": [ 1, 0, 0 ],
"entry": "scripts/main.js",
"language": "javascript"
}
],
"dependencies": [
{
"module_name": "@minecraft/server",
"version": "1.7.0"
}
]
}
示例:启用了元数据的行为包清单文件
manifest.json
{
"format_version": 2,
"header": {
"name": "元数据测试包",
"description": "一个启用了作者信息记录的行为包",
"uuid": "fbf600e2-a00f-4905-8d10-e04a1bdacbde",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 20, 50 ]
},
"modules": [
{
"type": "data",
"uuid": "d5d2004c-2db3-4833-88ce-fff05f9099eb",
"version": [ 1, 0, 0 ]
}
],
"metadata": {
"authors": [ "YZBWDLT" ],
"url": "https://yzbwdlt.pages.dev",
"license": "cc-by-nc-sa 4.0",
"product_type": "addon"
}
}
参考资料
Footnotes
-
是否可以运用到行为包有待验证。 ↩