从零编写地形包
本教程将会大致讲述新建 Terra 地形包的步骤,包括创建验证文件及首个生物群系。
如果你还没有准备好,请在开始阅读前浏览“配置开发介绍”章节。
如果你遇到问题或需要示例,你可以在 Github 仓库中找到本教程的参考用配置包。
信息
如果你希望修改已有地形包而不是自行创建,请参考“修改已有地形包”章节。
创建新地形包
步骤
1. 创建配置包目录
前往包目录,在里面创建一个新的文件夹,名称随意。这个包目录将会包含你的所有配置文件。
2. 创建包验证文件
在你的包目录文件中创建新的配置文件,名称为 pack.yml。
包验证文件将会为插件提供包相关的信息,使得其能够正常载入——比如包的作者,包的版本,依赖附属或 Minecraft 的版本等。
3. 设置包 ID 及版本
通过你选择的编辑器打开包验证文件。
在编辑器内,将如下参数加入其中:
id: YOUR_PACK_ID
version: 0.1.0参数可以视作“配置选项”——有关这部分的详细解释,你可以浏览“配置系统”章节。
你随时可以将这些参数按需要改变,但有如下限制:
包的
id只能包含英文字母、数字、横杠及下划线(不包括空格)。包的
id通常使用全小写字符,但并不是强制要求。包的
version需按 SemVer 格式标注为X.Y.Z。
另外,你还可以通过 author 参数在验证文件内将自己设置为作者。
id: YOUR_PACK_ID
version: 0.1.0
author: YOUR_USERNAME # 可选:::
4. 指定配置文件格式
Terra 需要你指定配置文件的格式,这点在“配置文件”章节有所提及。
在本教程中,我们使用 language-yaml 提供支持的 YAML 格式。YAML 是用于编写 Terra 配置文件的标准格式。我们可以通过 addons 参数引用,如下所示:
id: YOUR_PACK_ID
version: 0.1.0
addons:
language-yaml: "1.+"在 addons 参数下填入的键值对分别代表着拓展的名称,以及拓展指定的版本。
字符串 1.+ 表示这个包使用的拓展主版本为 1,而子版本(第二个数字)为 0 或更高。
信息
配置包内的所有配置文件都必须使用语言拓展支持的格式,可以在包验证文件内设置。包验证文件本身使用的格式需要能被任意安装的语言拓展识别,尽管它应该用自己指定的格式编写。
5. 选择区块生成器
区块生成器会告诉 Terra 如何(在为其生成装饰前)生成区块内的基础方块,这都是通过附属实现的。
在本教程中,我们会使用 NOISE_3D 生成器,由 chunk-generator-noise-3d 核心附属提供。我们可以将 chunk-generator-noise-3d 加入 addons 列表,如下所示:
addons:
language-yaml: "1.+"
chunk-generator-noise-3d: "1.+"信息
这只是你想要加入某个附属的假想流程!
在设置生成器之后,我们可以通过 generator 参数让包使用它,如下所示:
id: YOUR_PACK_ID
version: 0.1.0
addons:
language-yaml: "1.+"
chunk-generator-noise-3d: "1.+"
generator: NOISE_3DNOISE_3D 生成器需要两个叫做采样器与调色板的东西。若要定义这些,我们要在包文件内加入如下内容:
addons:
language-yaml: "1.+"
chunk-generator-noise-3d: "1.+"
config-noise-function: "1.+"
palette-block-shortcut: "1.+"6. 创建你的第一个生物群系
- 将
config-biome作为依赖导入,版本需求为1.+。这可以让你通过BIOME配置类型 增加新的生物群系。
addons:
language-yaml: "1.+"
chunk-generator-noise-3d: "1.+"
config-noise-function: "1.+"
palette-block-shortcut: "1.+"
config-biome: "1.+"创建新的配置文件,名称可以是任何内容,本示例使用的名称为
first_biome.yml。在
first_biome.yml内,打开你的编辑器,通过type为文件设置配置类型,然后填入id,如下所示:
id: FIRST_BIOME
type: BIOME- 设置
vanilla参数为原版生物群系 ID。本示例中我们使用minecraft:plains,但你可以任意填写原版的生物群系。
id: FIRST_BIOME
type: BIOME
vanilla: minecraft:plainsTerra 使用 vanilla 参数决定生物生成与草方块草皮的颜色,但处理逻辑可能会因你使用的平台而略有不同。
7. 向新群系添加生成器参数
这些参数会决定 NOISE_3D 在生物群系内的地形:
terrain.sampler - 决定群系内的地形形状。
现在,我们会为 terrain.sampler 使用如下配置:
id: FIRST_BIOME
type: BIOME
vanilla: minecraft:plains
terrain:
sampler:
type: LINEAR_HEIGHTMAP
base: 64我们稍后会讲解它的具体运作逻辑,现在只需要知道这只会生成一片平地,高度由 base 指定(示例中即为 y=64)。
::: palette - 决定群系内的方块构成。
palette 参数接受的是后接列表的单个键值对,键代表 palette 配置,值则决定了 Y 轴对应位置使用的方块。
例如,如下的配置表示,Y = 10 之下的位置使用 Palette C, Y = 11 到 Y = 30 的位置使用 Palette B,而 Y = 31 之上的位置则使用 Palette A。
palette:
- Palette A: 319 # 从 y319 到下一个调色板定义的位置 (即 y30)
- Palette B: 30 # 从 y30 到下一个调色板定义的位置 (即 y10)
- Palette C: 10 # 从 y10 到世界最低点palette-block-shortcut 附属允许通过 BLOCK:<方块 ID> 定义简单的单方块调色板。在我们的生物群系中,我们会以 minecraft:stone 为例,并通过 319 指定从 Y = 319 往下的位置均由 minecraft:stone 组成。
id: FIRST_BIOME
type: BIOME
vanilla: minecraft:plains
terrain:
sampler:
type: LINEAR_HEIGHTMAP
base: 64
palette:
- BLOCK:minecraft:stone: 3198. 设置群系提供器
为了让我们的地形包能够被顺利载入,也为了让 FIRST_BIOME 能正常生成,我们需要定义一个群系提供器。它能告诉 Terra 如何在世界内布置生物群系。
我们可以在 biomes 参数下设置提供器,但首先我们需要导入一个提供器备用。在本教程中,我们使用的是 SINGLE 提供器,通过 biome-provider-single 核心附属(版本 1.+)添加。
在你添加 biome-provider-single 之后,你可以在包验证文件中添加 biomes 文件,如下所示:
id: YOUR_PACK_ID
version: 0.1.0
addons:
language-yaml: "1.+"
chunk-generator-noise-3d: "1.+"
config-noise-function: "1.+"
palette-block-shortcut: "1.+"
config-biome: "1.+"
biome-provider-single: "1.+"
generator: NOISE_3D
biomes:
type: SINGLE
biome: FIRST_BIOME可以看见 SINGLE 提供器的 biome 参数是先前自定义的生物群系 id。这会让整个世界生成 FIRST_BIOME。
9. 载入地形包
到了这一步,你的包就可以正常生成世界了!你可以通过开发客户端/服务器载入你刚刚编写的包。你可以通过 /packs 命令确认插件是否显示了(验证文件中指定的)包 ID,或者在服务器/客户端启动时从日志中确认。
如果你的包出于某种原因没有载入,控制台中会出现其无法载入的报错,请仔细解读并尝试自行排除问题所在,并重新尝试之前的步骤。
如果你还是没有办法载入地形包,随时欢迎带着相关报错联系我们。
总结
在你的包成功载入之后,你就可以使用你的新地形包生成世界了!
本章节的参考配置可以在 Github 的这个地方找到。

SnowCutieOwO