此条目的(部分)内容需要翻译。
你可以帮助我们来翻译此条目,但请勿使用机器翻译。
此特性为基岩版独有。
参见:基岩版beta附加包文档
概述
生物群系描述了世界上一个区域的外观和行为。通过编写生物群系数据,你可以:
- 改变生物群系地形的一般形状。
- 改变生成生物群系类型的频率。
- 改变构成生物群系的方块,包括表面和下面。
- 改变生物群系的环境特征(譬如树木、草等)的分布。
- 改变生物群系上生成的生物。
- 改变生物群系的气候。
JSON格式
所有生物群系都应通过"format_version"字段指定其目标版本。生物群系数据的其余部分被划分为独立的JSON子对象或组件。一般来说,你可以认为一个组件的存在定义了一个生物群系参与的游戏行为,而组件字段定义了它如何参与。大体上有两类组成部分:
- 命名空间组件(既带有“name:”前缀的组件)映射到游戏中的特定行为。它们可能具有参数化该行为的字段;仅支持具有有效映射的名称。
- 没有命名空间的组件被视为标签:允许使用字母、数字、“.”和“_”组成的任何名称。将标签添加到生物群系,以便代码或数据可以检查其是否存在;标签组件可能没有字段。
有关其他详细信息和命名组件的完整列表,请参见下面的完整生物群系架构。
这是一个生物群系样本:
{
"format_version": "1.13.0",
"minecraft:biome": {
"description": {
"identifier": "plains"
},
"components": {
"minecraft:climate": {
"downfall": 0.4,
"snow_accumulation": [ 0.0, 0.125 ],
"temperature": 0.8
},
"minecraft:overworld_height": {
"noise_type": "lowlands"
},
"minecraft:overworld_surface": {
"floor_depth": 7,
"floor_material": "minecraft:gravel",
"foundation_material": "minecraft:stone",
"mid_material": "minecraft:dirt",
"top_material": "minecraft:grass"
},
"minecraft:world_generation_rules": {
"hills_transformation": [
[ "forest_hills", 1 ],
[ "forest", 2 ]
],
"mutate_transformation": "sunflower_plains",
"generate_for_climates": [
[ "medium", 3 ],
[ "warm", 1 ],
[ "cold", 1 ]
]
},
"animal": {},
"monster": {},
"overworld": {},
"plains": {}
}
}
}
添加生物群系
从行为包的biome子文件夹中的JSON文件读取生物群系。加载并对每个文件强制执行一个生物群系;文件名和实际的生物群系名称必须匹配;将新名称的文件添加到biome数据位置使其可供游戏使用,而现有的生物群系可以通过与其现有名称匹配的文件覆盖。注意,如果你添加了一个新的生物群系,你将需要编写组件数据,允许它参与世界生成(见下面的完整构架),否则它不会出现在你的世界中。
架构
{
version "format_version"
object "minecraft:climate"[0,3] : opt // 对该生物群系的温度、湿度、降水量等数据进行描述。缺少此部分的生物群系将会使用默认值。
{
float "temperature"
float "downfall"
array "snow_accumulation"[2]
{
float "0"
float "1"
}
}
object "minecraft:overworld_height"[0,2] : opt // 决定主世界地形高度的噪波参数。
{
array "noise_params"[2] : opt
{
float "0"
float "1"
}
string "noise_type" : opt
}
object "minecraft:forced_features"[0,14] : opt // 强制规定地物(如树木、植物等)在该生物群系中生成,忽略常规的地物生成规则。
{
array "first_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "before_underground_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "underground_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "after_underground_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "before_surface_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "surface_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "after_surface_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "before_liquids_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "liquids_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "after_liquids_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "before_sky_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "sky_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "after_sky_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
array "final_pass" : opt
{
object "<any array element>" : opt
{
molang "iterations" // 生成时的分散程度。
molang "chance_percent" : opt // 出现上述分散的概率(0-100)。不对每一次迭代进行计算;要么不运行在任何迭代,要么运行在全部迭代。
molang "x" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "x" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "z" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "z" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
molang "y" : opt // 坐标表达式(每次迭代都计算)。与下面的object随机分布互斥。
object "y" : opt // 坐标分布(每次迭代都计算)。与上面的molang表达式互斥。
{
enumerated_value "distribution" // 分布类型-随机分布,正态分布(以生成范围为中心),或网格分布。
int "step_count" : opt // 当生成类型为网格分布时,定义网格的疏密程度。
array "extent"[2]
{
molang "0" : opt // 分散范围的下限(包含),是从输入点到周围分散点的最低偏移量。
molang "1" : opt // 分散范围的上限(包含),是从输入点到周围分散点的最高偏移量。
}
}
feature_reference "places_feature"
}
}
}
object "minecraft:automatic_features"[0] : opt // 使用正常的地物生成规则来确定出现在这个生物群系中的树、植物等。
object "minecraft:overworld_surface"[0,5] : opt // 控制用于Minecraft主世界地形生成的默认方块。
{
block_reference "top_material" // 控制生成于该群系表面的方块类型。
block_reference "mid_material" // 控制生成于该群系表面下层的方块类型。
block_reference "floor_material" // 控制生成于该群系水面下的方块类型。
block_reference "foundation_material" // 控制生成于该群系地下深处的方块类型。
int "floor_depth" // 控制水底应低于水平面的深度。
}
object "minecraft:surface_material_adjustments"[0,1] : opt // 为地形生成中使用的方块指定精细细节更改(基于噪波函数)。
{
array "adjustments" : opt // 所有与column噪波的值匹配的调整都将按列出的顺序应用。
{
object "<any array element>"
{
object "materials"
{
block_reference "top_material" : opt // 控制当该种调整实施时生成于该群系表面的方块类型。
block_reference "mid_material" : opt // 控制当该种调整实施时生成于该群系表面下层的方块类型。
block_reference "floor_material" : opt // 控制当该种调整实施时生成于该群系水面下的方块类型。
block_reference "foundation_material" : opt // 控制当该种调整实施时生成于该群系地下深处的方块类型。
}
array "noise_range"[2] // 定义应用此调整的噪波的值的范围(最小值,最大值)。
{
string "0" : opt
float "0" : opt
string "1" : opt
float "1" : opt
}
}
}
}
object "minecraft:swamp_surface"[0,5] : opt // 类似于主世界表面。添加沼泽细节。
{
block_reference "top_material" // 控制生成于该群系表面的方块类型。
block_reference "mid_material" // 控制生成于该群系表面下层的方块类型。
block_reference "floor_material" // 控制生成于该群系水面下的方块类型。
block_reference "foundation_material" // 控制生成于该群系地下深处的方块类型。
int "floor_depth" // 控制水底应低于水平面的深度。
}
object "minecraft:frozen_ocean_surface"[0,5] : opt // 类似于主世界表面。添加冰山。
{
block_reference "top_material" // 控制生成于该群系表面的方块类型。
block_reference "mid_material" // 控制生成于该群系表面下层的方块类型。
block_reference "floor_material" // 控制生成于该群系水面下的方块类型。
block_reference "foundation_material" // 控制生成于该群系地下深处的方块类型。
int "floor_depth" // 控制水底应低于水平面的深度。
}
object "minecraft:mesa_surface"[0,9] : opt // 类似于主世界表面。添加彩色地层和可选的岩柱。
{
block_reference "top_material" // 控制生成于该群系表面的方块类型。
block_reference "mid_material" // 控制生成于该群系表面下层的方块类型。
block_reference "floor_material" // 控制生成于该群系水面下的方块类型。
block_reference "foundation_material" // 控制生成于该群系地下深处的方块类型。
int "floor_depth" // 控制水底应低于水平面的深度。
block_reference "clay_material"
block_reference "hard_clay_material"
bool "bryce_pillars"
bool "has_forest"
}
object "minecraft:nether_surface"[0] : opt // 控制用于Minecraft下界地形生成的默认方块。
object "minecraft:the_end_surface"[0] : opt // 控制用于Minecraft末路之地地形生成的默认方块。
object "minecraft:world_generation_rules"[0,3] : opt // 控制这个生物群系在世界生成过程中怎样实例化(然后有可能会被修改)。
{
biome_reference "hills_transformation" : opt
array "hills_transformation" : opt
{
biome_reference "<any array element>" : opt
array "<any array element>"[2] : opt
{
biome_reference "0"
int "1"
}
}
biome_reference "mutate_transformation" : opt
array "mutate_transformation" : opt
{
biome_reference "<any array element>" : opt
array "<any array element>"[2] : opt
{
biome_reference "0"
int "1"
}
}
array "generate_for_climates" : opt // 控制该生物群系可以产生的世界生成气候类型。一个生物群系可以关联优先级不同的多个气候类别。
{
array "<any array element>"[2]
{
enumerated_value "0" // 气候类型的名称。
int "1" // 相较于同一类别中的其他生物群系,选择该生物群系的生成优先级。
}
}
}
object "[a-z0-9_.:]+"[0] : opt // 在该生物群系上附加任意的字符串标签。
}