自定义世界生成(Custom world generation)可以让数据包改变世界的生成方式。
世界预设和维度[]
世界预设(World preset)控制世界具有哪些维度。在1.19(22w11a)之前,维度是在维度文件夹中定义的,而不是在世界预设中定义的。在当前版本中推荐使用世界预设,但游戏仍支持维度文件夹。
世界预设或维度定义了维度中使用的生成器(噪声、调试或超平坦)。如果是噪声生成器,又额外定义了使用什么噪声设置和生物群系,以及如何放置生物群系。
噪声设置[]
噪声设置(Noise settings)用于生成地形和噪声洞穴的形状,以及生成地形时使用哪些方块,其以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/noise_settings
目录下,用于维度中的minecraft:noise
生成器。原版中的设置包括:minecraft:overworld
用于一般的主世界生成,minecraft:amplified
用于放大化主世界生成,minecraft:nether
用于常规的下界生成,minecraft:caves
用于洞穴生成,minecraft:end
用于常规的末地生成,minecraft:floating_islands
用于浮岛的生成。
在地形生成时,最终密度(final_density
)小于等于零的位置为空气并将会被含水层填充,大于零的位置生成世界的默认方块default_block
并将被地表规则(surface_rule
)填充。在应用地表规则时,游戏会使用minecraft:surface
噪声决定表层厚度,将(X,0,Z)处的噪声值 × 2.75 + 3.0
作为表层厚度,而实际表层厚度还受与坐标相关的随机数的影响上下浮动0.25。该噪声与实际表层厚度在原版的地表规则中配合使用,例如用以决定平原生物群系里泥土和草方块的总厚度。
JSON格式[]
- :根对象。
- sea_level:此维度的海平面高度。注意:该值只影响世界生成。生物生成所使用的海平面高度目前为固定值63。
- disable_mob_generation:是否禁止普通动物随地形一起生成。
- ore_veins_enabled:是否生成矿脉。
- aquifers_enabled:是否生成含水层和含熔岩层。
- legacy_random_source:是否使用1.18之前的旧的随机数生成器来生成世界。
- default_block:该维度地形的默认的方块。
- 方块状态
- default_fluid:该维度默认的流体,用于生成海洋和湖。
- 方块状态
- spawn_target:(必选,但可以为空)一个生物群系参数区间/值的列表,用于决定玩家出生点的环境条件。会选取距离(0,0)不超过2560格的多个点,获取其环境条件噪声值(depth值和offset值恒为0),计算,其中代表该点处某种生物群系参数的值到本列表中对应值的区间的距离()。计算结果最小的位置就是最佳位置。玩家出生位置会在这个位置附近。
- :一个范围区间。
- 生物群系噪声值参数
- :一个范围区间。
- noise:世界生成参数。
- min_y:地形开始生成的最低高度。取值为-2032到2031的闭区间,必须是16的倍数()。
- height:地形生成的总高度。取值为0到4064的闭区间,必须是16的整数倍()。min_y + height不能超过2032。
- size_horizontal:取值为0到4的闭区间。
- size_vertical:取值为0到4的闭区间。
- noise_router:将密度函数应用于用于世界生成的噪声参数。以下每个字段可以填入一个密度函数ID或一个密度函数(包括常量形式和对象形式)。
- initial_density_without_jaggedness:与含水层和地表规则的生成有关。在一XZ坐标下,从世界顶部开始以size_vertical*4个方块的精度从上到下查找,初次遇到大于25/64的值的高度作为世界生成的初始地表高度。该高度通常应该低于实际的地表高度(由
final_density
决定)。 - final_density:决定了一个坐标是空气(可以生成含水层)还是世界的默认方块 default_block(将会被 surface_rule填充)。
- barrier:影响是否使用方块分隔含水层和洞穴其他区域。函数值越大越有可能分隔。
- fluid_level_floodedness:影响含水层生成液体的的概率。函数值越大越有可能生成。该噪声值大于1.0的被视为1.0,小于-1.0的被视为-1.0。
- fluid_level_spread:影响某处含水层液体表面的高度。函数值越小液体表面越可能较低。
- lava:影响某处含水层是否使用熔岩代替水。阈值为0.3。
- vein_toggle:影响矿脉类型和垂直范围。这值大于0.0将是铜矿脉,小于等于0.0将是铁矿脉。
- vein_ridged:控制哪些方块会参与组成矿脉。如果小于0.0,则方块是矿脉的一部分(是否为矿石块由下方值决定)。
- vein_gap:影响矿脉中的哪些方块将是矿石块。如果大于-0.3,并且随机数小于从0.4到0.6映射到0.1到0.3的vein_toggle的绝对值,则会放置矿石块,且有2%的概率变为粗金属块。否则,将放置矿脉类型对应的石块。
- temperature:生物群系的温度噪声。这里和下方的六个值是用于生物群系放置的生物群系参数。某点处生物群系的生物群系参数向量与该点处的对应参数向量的2-范数距离是最小的。
- vegetation:即humidity,生物群系的湿度噪声。
- continents:生物群系的大陆性噪声。
- erosion:生物群系的侵蚀噪声。
- depth:生物群系的深度噪声。
- ridges:即weirdness,生物群系的奇异噪声。
- initial_density_without_jaggedness:与含水层和地表规则的生成有关。在一XZ坐标下,从世界顶部开始以size_vertical*4个方块的精度从上到下查找,初次遇到大于25/64的值的高度作为世界生成的初始地表高度。该高度通常应该低于实际的地表高度(由
- surface_rule:为地形填充方块。
- 地表规则
密度函数和噪声[]
密度函数为noise_router
提供能随坐标变化的值。
噪声[]
噪声可以被密度函数和地表规则调用,以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/noise
目录下。
除了被密度函数和地表规则调用外,也有一些具有硬编码的特殊用途的噪声。包括:
minecraft:surface
:决定地表规则中的表层厚度。minecraft:surface_secondary
:作为地表规则中的附加表层厚度。minecraft:clay_bands_offset
:用以生成bandlands
地表规则中的恶地陶瓦条带。minecraft:badlands_pillar
、minecraft:badlands_pillar_roof
、minecraft:badlands_surface
:硬编码在minecraft:eroded_badlands
生物群系生成恶地柱。minecraft:iceberg_pillar
、minecraft:iceberg_pillar_roof
、minecraft:iceberg_surface
:硬编码在minecraft:frozen_ocean
和minecraft:deep_frozen_ocean
生物群系生成冰山。
噪声的JSON格式[]
- :根对象。
- firstOctave:主倍频。如果噪声设置里的 legacy_random_source为true,必须为小于等于1的整数,否则取值范围不限。
- amplitudes:振幅列表。将此列表记为,则列表中第i项(从0开始数)的子噪声的频率为,其中o为 firstOctave的值;此子噪声的振幅(与值域相关)为。各频率的子噪声值相加以得到总噪声值,取值上下限为,其中l是非零振幅子噪声的最大与最小编号之差,r为3维改进版柏林噪声的最大值,此值为常数,大于1且小于,可以取为1.036353811211803[1]。如果噪声设置里的 legacy_random_source为true,则此列表长度必须小于等于,否则长度不限。
- :此倍频下的值。
生物群系[]
生物群系(Biome)是在维度里划分出的区域,具有独特的地物、雕刻器、气候、生成的生物、环境音效、音乐以及天空、水、草地和树叶的颜色。以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/biome
目录下。
雕刻器[]
雕刻器(Carver)用于雕刻出洞穴或峡谷。注意,噪声洞穴由噪声设置生成,而非雕刻器。
地物[]
地物(Feature)是在世界生成中用以生成特殊元素的功能。
结构地物[]
结构地物(Structure feature)是一种特殊的用于生成结构的地物。
地表生成器[]
这些特性曾存在于游戏中,但已被移除。
地表生成器(Surface builder)过去用于控制地表的形状和其生成的方块。其以JSON文件的形式存储在数据包的data/<命名空间>/worldgen/configured_surface_builder
目录下。
历史[]
Java版 | |||||
---|---|---|---|---|---|
1.16.2 | 20w28a | 加入了对自定义世界生成的支持。 | |||
20w29a | 噪声设置被移动到了worldgen/noise_settings下。 | ||||
pre1 | 自定义世界生成从data/minecraft/<type>/<namespace>/<path>移动到了data/<namespace>/<type>/<path>,和其他资源保持一致。 | ||||
1.17 | 20w49a | 在“噪声设置”部分加入了 noise.min_y字段。 | |||
21w06a | 在“噪声设置”部分加入了 noise_caves_enabled、 aquifers_enabled和 min_surface_level参数,均对于主世界默认为true 。 | ||||
21w07a | 在“噪声设置”部分加入了 grimstone_enabled参数,对于主世界默认为true 。
| ||||
加入了新的矿脉地物生成机制。 | |||||
21w08a | 将上个快照的 grimstone_enabled参数替换为 deepslate_enabled。 | ||||
略微更改了新的矿脉地物生成机制。 | |||||
21w14a | 在“噪声设置”部分加入了 min_surface_level字段。 | ||||
21w15a | noise_caves_enabled、 aquifers_enabled和 deepslate_enabled参数现在在主世界中也默认为false 了。
| ||||
在各个生物群系中禁用了新的矿脉地物生成机制。 | |||||
洞穴与山崖地形生成的有关更改被整合到洞穴与山崖预览数据包中。 | |||||
21w16a | 在“噪声设置”部分加入了 ore_veins_enabled参数,在各维度中都默认为false 。 | ||||
21w17a | 在“噪声设置”部分加入了 noodle_caves_enabled参数,在各维度中都默认为false 。 | ||||
1.18 | 21w37a | 移除了“噪声设置”部分的 min_surface_level字段。 | |||
21w38a | 移除了“雕刻器”部分的 aquifers_enabled字段。 | ||||
21w39a | 加入了方块处理谓词。 | ||||
21w40a | 在“噪声设置”部分加入了 noise.legacy_random_source参数。 | ||||
基岩的生成现在与种子相关了。 | |||||
加入了方块处理谓词true 。 | |||||
21w41a | 加入了表面规则,并移除了地表生成器。 | ||||
在“噪声设置”部分加入了 surface_rule字段。 | |||||
移除了“噪声设置”部分的noise.simplex_surface_noise 和noise.random_density_offset 字段。 | |||||
主世界噪声设置的 legacy_random_source参数现在设为false 了。 | |||||
21w42a | 将表面规则noise_threshold 的name 字段改为noise ,指向数据包的data/命名空间/worldgen/noise 的噪声文件。
| ||||
向数据包中加入了worldgen/noise 目录来存储噪声参数。 | |||||
21w43a | 在“噪声设置”部分加入了 noise.terrain_shaper字段,包含offset factor jaggedness 三个参数。
| ||||
加入了above_preliminary_surface和vertical_gradient表面规则。 | |||||
21w44a | 在“噪声设置”部分加入了 noise.large_biomes字段。 | ||||
移除了“噪声设置”部分的 noise.density_factor和 noise.density_offset字段。 | |||||
移除了“噪声设置”的 bedrock_roof_position, bedrock_floor_position和 deepslate_enabled字段,被表面规则取代。 | |||||
1.18.2 | 22w06a | 为结构噪声设置添加标签字段。 |
外部链接[]
- 原版世界生成设置(直接下载)
- ↑ 更新版本的世界生成设置已内置于对应版本的client.jar中。
参考[]
组件 |
| ||
---|---|---|---|
数据包 | |||
教程 |
|
语言