329 lines
11 KiB
Markdown
329 lines
11 KiB
Markdown
---
|
||
title: 世界生成入门
|
||
category: 基础
|
||
nav_order: 1
|
||
tags:
|
||
- 指南
|
||
- 实验性功能
|
||
mentions:
|
||
- SirLich
|
||
- solvedDev
|
||
- Dreamedc2015
|
||
- destruc7ion
|
||
- MedicalJewel105
|
||
- aexer0e
|
||
- retr0cube
|
||
- SmokeyStack
|
||
---
|
||
|
||
# 世界生成入门
|
||
|
||
<!--@include: @/wiki/bedrock-wiki-mirror.md-->
|
||
|
||
:::warning
|
||
本文档部分内容已过时,信息量有限。如需获取最新最全面的信息,请查阅本节其他页面。
|
||
:::
|
||
|
||
您可以通过附加包修改世界的生成规则。行为包中需要以下文件夹:
|
||
|
||
`structures`(结构)、`features`(特征)、`feature_rules`(特征规则)和 `biomes`(生物群系)。顾名思义:您可以将结构方块生成的.mcstructure文件存放在`structures`中,生物群系文件存放在`biomes`中,矿石等地形特征存放在`features`中,其生成规则则存放在`feature_rules`中。让我们先从添加自定义生物群系开始。
|
||
|
||
_注:使用 bridge. 这款可视化附加包创作工具(联系方式见"链接与联系")创建生物群系可能更方便,因为官方文档尚不完善。您也可以生成所有原版生物群系、特征和特征规则的示例文件作为参考,如下图所示:_
|
||
|
||

|
||
_使用 bridge. 生成 coal_ore 特征_
|
||
|
||
当然,bridge. 并非必需工具。
|
||
|
||
---
|
||
|
||
## 自定义生物群系
|
||
|
||
::: code-group
|
||
```json [BP/biomes/cold_biome.json]
|
||
{
|
||
"format_version": "1.13.0",
|
||
"minecraft:biome": {
|
||
"description": {
|
||
"identifier": "cold_biome"
|
||
},
|
||
"components": {
|
||
"minecraft:climate": {
|
||
"downfall": 0.7,
|
||
"snow_accumulation": [0.6, 0.9],
|
||
"temperature": 15.0
|
||
},
|
||
"minecraft:overworld_height": {
|
||
"noise_params": [0.6, 0.9]
|
||
},
|
||
"minecraft:surface_parameters": {
|
||
"sea_floor_depth": 7,
|
||
"sea_floor_material": "minecraft:blue_ice",
|
||
"foundation_material": "minecraft:cobblestone",
|
||
"mid_material": "minecraft:minecraft:concrete",
|
||
"top_material": "minecraft:glass",
|
||
"sea_material": "minecraft:water"
|
||
},
|
||
"minecraft:overworld_generation_rules": {
|
||
"generate_for_climates": [
|
||
["medium", 100],
|
||
["warm", 100],
|
||
["cold", 100]
|
||
]
|
||
},
|
||
"cold_biome": {}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
- 设置 `format_version` 为 1.13.0:这是当前版本的最新生物群系文件格式
|
||
- `description` 仅需一个值:`identifier`。此处**不需要命名空间**且**必须**与**文件名**一致
|
||
(如果使用命名空间,例如 `wiki:cold_biome`,文件名仍需保持为 `cold_biome.json`)
|
||
- `components` 即生物群系的基本属性配置,让我们逐一解析:
|
||
- `minecraft:climate` 控制气候相关参数
|
||
- `downfall` 表示降水频率。0.0 代表无降水(如沙漠),1.0 表示持续降水
|
||
- `temperature` 用于定义水体结冰和降雨转雪等效果
|
||
|
||
**可使用 bridge. 生成原版生物群系文件作为参考**
|
||
|
||
- `overworld_surface` 控制地形生成材质
|
||
- `floor_depth` 表示湖泊河流的底部深度(方块数)
|
||
- `sea_floor_material` 定义水域底部材质
|
||
- `foundation_material` 用于 y=5 至 y=50 之间的基础岩层(例如沙漠使用石头)
|
||
- `sea_material` 水域液体材质(主世界通常设为 "minecraft:water")
|
||
- `top_material` 表层材质(如草方块用于平原)
|
||
- `mid_material` 中间层材质(如泥土用于平原)
|
||
- `overworld_height` 定义地形高度特征
|
||
|
||
不可同时使用 `noise_type` 和 `noise_params`。`noise_params` 是包含噪声最高值和最低值的数组
|
||
|
||

|
||
_使用 noise_params [0.1, 0.1] 和 [1.0, 1.0] 生成的同生物群系非平滑过渡示例_
|
||
|
||
- 若使用 `noise_type`,可选预设值包括:
|
||
`beach, default, extreme, taiga, ocean, mountains, default_mutated, deep_ocean, lowlands, less_extreme, stone_beach, swamp, river, mushroom`
|
||
|
||
- `minecraft_world_generation_rules` 是最重要的组件,特别是 `generate_for_climates` 数组。游戏中有三种气候:"warm"、"medium" 和 "cold"。在世界生成时这些气候会随机分布[硬编码]。您可以为每个气候设置生物群系的生成权重。若不设置,默认权重为0,生物群系不会生成。示例中测试时将各气候权重设为100,使该生物群系在主世界广泛生成。正式使用时需调整权重(例如原版沙漠在warm气候中的权重为3)
|
||
|
||
- 该组件还包含 `hills_transformation`、`mutate_transformation`、`shore_transformation`、`river_transformation` 等参数,具体含义尚不明确。欢迎补充说明。`surface_meaterial_adjustments` 组件同理
|
||
|
||
- 最后是生物群系标签!使用方式简单但实用。通过在 `components` 中添加如下格式的标签:
|
||
```
|
||
"tagName": {}
|
||
```
|
||
即可在环境传感器、过滤器、生物群系检测、生成规则等场景中使用该标签
|
||
|
||
至此,您的自定义生物群系已创建完成!
|
||
|
||
---
|
||
|
||
## 特征与特征规则
|
||
|
||
注:在 v1.15Beta 中,可使用 `structures` 文件夹中的 `.mcstructures` 配合 `feature_rules` 生成自定义结构。更多详情将在更新发布后补充
|
||
|
||
特征与特征规则用于生成矿石、花草、植被、花岗岩或黏土矿脉等各类地形元素。虽然目前可用其创建自定义结构,但操作繁琐,建议等待后续更新简化流程
|
||
|
||
推荐使用 [MACHINE_BUILDER](https://www.youtube.com/channel/UC8FBQgo4AWwKFX97h60NKOQ) 开发的[自动生成工具](https://machine-builder.itch.io/frg-v2)来创建自定义结构。该工具免费版功能有限,完整功能需购买专业版。不过我们仍将学习手动创建特征的方法,因为矿石等元素使用 `ore_feature` 比 `structure_template_feature` 更高效
|
||
|
||
让我们以生成自定义方块 `wiki:blocky` 的矿石为例:
|
||
|
||
1. 打开 bridge. 选择附加包
|
||
1. 新建文件 > features > diamond_ore 和 feature_rules > diamond_ore
|
||
1. 保存文件后用代码编辑器进行必要修改
|
||
|
||
_若无安装 bridge.,也可手动创建或从[示例包](https://www.minecraft.net/en-us/addons)或 [bridge. 仓库](https://github.com/bridge.-core/bridge../tree/master/static/vanilla)获取原版文件_
|
||
|
||
## 特征
|
||
|
||
特征文件位于 `BP/features` 目录,本质上是游戏中可被特征规则放置的区块集合。**文件名**必须与**标识符**匹配
|
||
|
||
完整文档请参考 [bedrock.dev/r/Features](https://bedrock.dev/r/Features)
|
||
|
||
::: code-group
|
||
```json [BP/features/blocky_ore_feature.json]
|
||
{
|
||
"format_version": "1.13.0",
|
||
"minecraft:ore_feature": {
|
||
"description": {
|
||
"identifier": "blocky_ore_feature"
|
||
},
|
||
"count": 8,
|
||
"places_block": "wiki:blocky",
|
||
"may_replace": [
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "andesite"
|
||
}
|
||
},
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "andesite_smooth"
|
||
}
|
||
},
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "diorite"
|
||
}
|
||
},
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "diorite_smooth"
|
||
}
|
||
},
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "granite"
|
||
}
|
||
},
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "granite_smooth"
|
||
}
|
||
},
|
||
{
|
||
"name": "minecraft:stone",
|
||
"states": {
|
||
"stone_type": "stone"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
- `minecraft_ore_feature` 是自动生成矿石的特定特征类型。每种特征类型都有独特语法(另有 `single_block_feature` 用于生成单个方块等)
|
||
- `identifier` 此处不需要命名空间。文件名不包含命名空间
|
||
- `count` 表示矿簇的最大方块数
|
||
- `places_block` 设置要生成的方块标识符
|
||
- `may_replace` 列出可被替换的方块类型。遇到未列出的方块时将保留原方块
|
||
|
||
## 特征规则
|
||
|
||
**特征规则**控制特征(及未来的结构)的生成位置和方式
|
||
|
||
::: code-group
|
||
```json [BP/feature_rules/overworld_underground_blocky_ore_feature.json]
|
||
{
|
||
"format_version": "1.13.0",
|
||
"minecraft:feature_rules": {
|
||
"description": {
|
||
"identifier": "overworld_underground_blocky_ore_feature",
|
||
"places_feature": "blocky_ore_feature"
|
||
},
|
||
"conditions": {
|
||
"placement_pass": "underground_pass",
|
||
"minecraft:biome_filter": [
|
||
{
|
||
"any_of": [
|
||
{
|
||
"test": "has_biome_tag",
|
||
"operator": "==",
|
||
"value": "overworld"
|
||
},
|
||
{
|
||
"test": "has_biome_tag",
|
||
"operator": "==",
|
||
"value": "overworld_generation"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"distribution": {
|
||
"iterations": 100,
|
||
"coordinate_eval_order": "zyx",
|
||
"x": {
|
||
"distribution": "uniform",
|
||
"extent": [0, 16]
|
||
},
|
||
"y": {
|
||
"distribution": "uniform",
|
||
"extent": [0, 16]
|
||
},
|
||
"z": {
|
||
"distribution": "uniform",
|
||
"extent": [0, 16]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
- `description`
|
||
- `identifier` 不需要命名空间,但文件名需匹配
|
||
- `places_feature` 设置要控制的特征标识符
|
||
- `conditions`
|
||
- `placement_pass` 控制特征生成阶段
|
||
- `biome_filter` 通过生物群系标签过滤生成位置(与生成规则类似)
|
||
- `distribution`
|
||
- `iterations` 生成概率。设为100表示全图生成(钻石矿通常设为1)
|
||
- 后续参数控制矿脉延伸方向(需要更多说明)
|
||
|
||
测试矿石生成建议在低Y坐标使用指令 `/fill ~15 ~5 ~15 ~-15 ~-15 ~-15 air 0 replace stone`,该指令会清除选定区域内所有石头,保留其他方块:
|
||
|
||

|
||
|
||
显然,将"iterations"设为100确实过量 ;)
|
||
|
||
建议通过研究原版特征和特征规则文件来学习更多技巧。不过上文所述内容已能满足大部分生成需求
|
||
|
||
---
|
||
|
||
## 自定义结构
|
||
|
||
自 MCBE v1.16.20 起,**支持自定义生成结构**
|
||
推荐使用前文提到的 [MACHINE_BUILDER 工具](https://machine-builder.itch.io/frg-v2)自动生成结构文件。该工具会生成三个必要文件:`feature_rules/mystructure.feature_rule.json`、`feature_rules/mystructure.feature.json` 和 `structures/mystructure.mcstructure`。更多关于使用结构块定义 `.mcstructure` 的内容请参考[此文档](/wiki/nbt/mcstructure)
|
||
|
||
---
|
||
|
||
准备好 `.mcstructure` 文件后,需要编写对应的 `feature` 和 `feature rule`。特征规则与矿石生成类似(参见前文),以下是**特征**示例(来自[特征文档](https://bedrock.dev/r/Features#minecraft:structure_template_feature)):
|
||
|
||
::: code-group
|
||
```json [示例]
|
||
{
|
||
"format_version": "1.13.0",
|
||
"minecraft:structure_template_feature": {
|
||
"description": {
|
||
"identifier": "wiki:hot_air_balloon_feature"
|
||
},
|
||
"structure_name": "wiki:hot_air_balloon",
|
||
"adjustment_radius": 8,
|
||
"facing_direction": "random",
|
||
"constraints": {
|
||
"unburied": {},
|
||
"block_intersection": {
|
||
"block_whitelist": [
|
||
"minecraft:air"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
- `structure_name` 是结构块的保存标识符
|
||
|
||
至此,您已掌握在游戏中生成自定义结构的方法!
|
||
|
||
---
|
||
|
||
## 当前进度
|
||
|
||
**已完成内容:**
|
||
|
||
<Checklist>
|
||
|
||
- [x] 创建第一个生物群系
|
||
- [x] 实现首个自然生成的矿石
|
||
- [x] 掌握使用 bridge. 生成原版参考文件
|
||
- [x] 了解其他自定义生成方法
|
||
- [x] 创建自定义结构
|
||
|
||
</Checklist> |