在这篇指南中,你将搭建一个能被 Minecraft 识别的空附加包。它暂时还不会添加任何内容,但它是你以后制作每个物品、方块和生物的基础。整个过程大约需要十分钟。
文件夹结构
在任意位置创建一个项目文件夹,比如放在桌面上。在里面建两个文件夹:一个放行为包,一个放资源包。
my_first_addon/
BP/
manifest.json
pack_icon.png
items/
RP/
manifest.json
pack_icon.png
textures/
texts/BP 和 RP 这两个名字只是大多数创作者的习惯。Minecraft 并不在意外层文件夹叫什么,它只关心里面有什么,而其中最重要的文件就是 manifest.json。
清单文件的作用
每个包的顶层文件夹里都需要一个 manifest.json。它告诉 Minecraft:
- 包的名称和描述
- 一个唯一 ID(UUID),让游戏能区分不同的包
- 包的版本
- 包的类型(行为包还是资源包)
- 它需要依赖哪些其他包
如果清单文件缺失或有错误,Minecraft 根本不会显示这个包。
UUID
UUID 是一串很长的随机 ID,看起来像这样:7da910dc-081d-41d2-84e6-fcd9e04cbffb。每个包都需要自己的 UUID,世界上任何两个包都不应该共用同一个。
一个行为包 + 资源包的附加包需要四个 UUID:
- 行为包 header
- 行为包 module
- 资源包 header
- 资源包 module
获取方法:在浏览器里搜索“UUID generator”(UUID 生成器),复制四个新的 UUID。在 VS Code 中,基岩版相关的扩展也可以生成 UUID。
千万不要从教程里复制 UUID
本页中的 UUID 只是示例。如果你复制了它们,而别人也这样做了,你们的包就会冲突,其中一个将无法加载。一定要自己生成。
行为包清单文件
创建 BP/manifest.json 并粘贴以下内容,然后把 UUID 换成你自己的:
{
"format_version": 2,
"header": {
"name": "My First Add-on",
"description": "My very first behavior pack",
"uuid": "7da910dc-081d-41d2-84e6-fcd9e04cbffb",
"version": [1, 0, 0],
"min_engine_version": [1, 26, 50]
},
"modules": [
{
"type": "data",
"uuid": "92b4a8c1-cbc4-4b82-85bd-e36e922d0621",
"version": [1, 0, 0]
}
],
"dependencies": [
{
"uuid": "f67430fa-ef89-4f40-802d-9574599c764d",
"version": [1, 0, 0]
}
]
}资源包清单文件
创建 RP/manifest.json。注意 module 的类型不同,而且它的 header UUID 与行为包 dependencies 中的那个相同:
{
"format_version": 2,
"header": {
"name": "My First Add-on",
"description": "My very first resource pack",
"uuid": "f67430fa-ef89-4f40-802d-9574599c764d",
"version": [1, 0, 0],
"min_engine_version": [1, 26, 50]
},
"modules": [
{
"type": "resources",
"uuid": "654e78d1-0b0d-4f13-9a3b-6336f0ceab13",
"version": [1, 0, 0]
}
]
}每个字段详解
format_version
清单格式本身的版本。使用 2,这也是 Mojang 原版包使用的版本。它是一个普通数字,不是带引号的文本。
提示
还有一种较新的清单 format_version 3,其中的版本号写成 "1.0.0" 这样的文本,而不是数组。版本 2 仍然完全受支持,本 Wiki 使用的也是版本 2。
header
关于整个包的信息。
name:显示在游戏内的包列表中。description:名称下方的小字。uuid:包的唯一 ID。version:三个数字:主版本号、次版本号、补丁号。发布更新时把它调高,比如从[1, 0, 0]改成[1, 0, 1]。Minecraft 靠它判断包是否更新了。min_engine_version:你的包所针对的最低 Minecraft 版本。它还会决定游戏如何读取你的某些文件,所以请把它设为你正在测试的版本,比如[1, 26, 50]。
modules
包里包含什么。一个包至少需要一个 module,每个 module 都有自己的 UUID。
| Module 类型 | 用于 | 包含 |
|---|---|---|
data | 行为包 | 物品、方块、实体、配方、战利品表、函数 |
resources | 资源包 | 纹理、模型、声音、文本 |
script | 行为包 | 使用脚本 API 的 JavaScript 文件 |
dependencies
这个包所需的其他包的列表。每一项都包含另一个包 header 的 uuid 和 version。
在这里,行为包依赖资源包。这个关联有个很好的效果:当你在世界中启用行为包时,Minecraft 会自动帮你启用资源包。如果没有它,玩家可能只启用了行为包,结果看到的物品都没有纹理。
小贴士
依赖项必须指向资源包的 header UUID,而不是它的 module UUID。这是新手最常犯的错误之一。
包图标
在每个包文件夹的顶层、清单文件旁边放一个 pack_icon.png。这就是包列表中显示的图片。
- 做成正方形。128x128 或 256x256 像素都很好看。
- 保存为 PNG 格式。
- 两个包可以使用同一张图片。
如果没有图标,包仍然可以使用,只是会显示一张空白的占位图。
添加语言文件
游戏中显示的名称来自资源包里的语言文件。现在就创建这两个文件,为后面的指南做好准备:
["en_US"]pack.name=My First Add-on
pack.description=My very first add-on之后你会在这里添加像 item.demo:ruby.name=Ruby 这样的行。
测试能否加载
- 把
BP文件夹复制到com.mojang/development_behavior_packs。 - 把
RP文件夹复制到com.mojang/development_resource_packs。 - 打开 Minecraft,创建一个新世界。
- 在世界设置中打开行为包,查看可用一栏。你的包应该带着图标出现在那里。
- 激活它。由于设置了依赖,资源包应该会自动启用。
如果包没有出现,请查看出问题时怎么办。最可能的原因是清单文件里有拼写错误,所以接下来可以读一读5 分钟学会 JSON。
简单方式
手动编写清单文件和生成 UUID 是每个项目只需做一次的杂活,但小小的拼写错误也最容易在这里把一切搞坏。GodCraft 会帮你完成这一步:你在工坊中创建的每个附加包都会获得全新的 UUID、两个清单文件,以及两个包之间的依赖关联。你只需要在包设置中填写自己关心的细节。
下一步
你的空附加包已经可以用了。现在给它找点事做:
- 你的第一个自定义物品
- 自定义方块
- 导出并游玩,和朋友一起分享