Skip to content

世界生成入门

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

WARNING

本文档部分内容已过时,信息量有限。如需获取最新最全面的信息,请查阅本节其他页面。

您可以通过附加包修改世界的生成规则。行为包中需要以下文件夹:

structures(结构)、features(特征)、feature_rules(特征规则)和 biomes(生物群系)。顾名思义:您可以将结构方块生成的.mcstructure文件存放在structures中,生物群系文件存放在biomes中,矿石等地形特征存放在features中,其生成规则则存放在feature_rules中。让我们先从添加自定义生物群系开始。

注:使用 bridge. 这款可视化附加包创作工具(联系方式见"链接与联系")创建生物群系可能更方便,因为官方文档尚不完善。您也可以生成所有原版生物群系、特征和特征规则的示例文件作为参考,如下图所示:

使用 bridge. 生成 coal_ore 特征

当然,bridge. 并非必需工具。


自定义生物群系

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_typenoise_paramsnoise_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_transformationmutate_transformationshore_transformationriver_transformation 等参数,具体含义尚不明确。欢迎补充说明。surface_meaterial_adjustments 组件同理

  • 最后是生物群系标签!使用方式简单但实用。通过在 components 中添加如下格式的标签:

"tagName": {}

即可在环境传感器、过滤器、生物群系检测、生成规则等场景中使用该标签

至此,您的自定义生物群系已创建完成!


特征与特征规则

注:在 v1.15Beta 中,可使用 structures 文件夹中的 .mcstructures 配合 feature_rules 生成自定义结构。更多详情将在更新发布后补充

特征与特征规则用于生成矿石、花草、植被、花岗岩或黏土矿脉等各类地形元素。虽然目前可用其创建自定义结构,但操作繁琐,建议等待后续更新简化流程

推荐使用 MACHINE_BUILDER 开发的自动生成工具来创建自定义结构。该工具免费版功能有限,完整功能需购买专业版。不过我们仍将学习手动创建特征的方法,因为矿石等元素使用 ore_featurestructure_template_feature 更高效

让我们以生成自定义方块 wiki:blocky 的矿石为例:

  1. 打开 bridge. 选择附加包
  2. 新建文件 > features > diamond_ore 和 feature_rules > diamond_ore
  3. 保存文件后用代码编辑器进行必要修改

若无安装 bridge.,也可手动创建或从示例包bridge. 仓库获取原版文件

特征

特征文件位于 BP/features 目录,本质上是游戏中可被特征规则放置的区块集合。文件名必须与标识符匹配

完整文档请参考 bedrock.dev/r/Features

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 列出可被替换的方块类型。遇到未列出的方块时将保留原方块

特征规则

特征规则控制特征(及未来的结构)的生成位置和方式

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 工具自动生成结构文件。该工具会生成三个必要文件:feature_rules/mystructure.feature_rule.jsonfeature_rules/mystructure.feature.jsonstructures/mystructure.mcstructure。更多关于使用结构块定义 .mcstructure 的内容请参考此文档


准备好 .mcstructure 文件后,需要编写对应的 featurefeature rule。特征规则与矿石生成类似(参见前文),以下是特征示例(来自特征文档):

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 是结构块的保存标识符

至此,您已掌握在游戏中生成自定义结构的方法!


当前进度

已完成内容: