噪声设置

来自Minecraft Wiki
跳转到导航 跳转到搜索
本文章所述内容仅适用于Java版

噪声设置(Noise settings)也即噪声生成器设置(Noise generator settings)。噪声设置用于生成地形和噪声洞穴的形状,以及生成地形时使用哪些方块,其以JSON文件的形式存储在数据包data/<命名空间>/worldgen/noise_settings目录下,用于维度中的minecraft:noise生成器。原版中的设置包括:minecraft:overworld用于一般的主世界生成,minecraft:amplified用于放大化主世界生成,large_biomes用于巨型生物群系生成,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。该噪声与实际表层厚度在原版的地表规则中配合使用,例如用以决定平原生物群系里泥土和草方块的总厚度。

  • NBT复合标签/JSON对象:根对象。
    • 整型sea_level:此维度的海平面高度。
    • 布尔型disable_mob_generation:是否禁止普通动物随地形一起生成。
    • 布尔型ore_veins_enabled:是否生成矿脉
    • 布尔型aquifers_enabled:是否生成含水层和含熔岩层。
    • 布尔型legacy_random_source:是否使用1.18之前的旧的随机数生成器来生成世界。
    • NBT复合标签/JSON对象default_block:该维度地形的默认的方块。
    • NBT复合标签/JSON对象default_fluid:该维度默认的流体,用于生成海洋和湖。
    • NBT列表/JSON数组spawn_target:(可以为空)一个生物群系参数区间/值的列表,用于决定玩家出生点的环境条件。会选取距离(0,0)不超过2560格的多个点,获取其环境条件噪声值(depth值和offset值恒为0),计算(x2+z2)2390625+i=16di2,其中di代表该点处某种生物群系参数的值到本列表中对应值的区间的距离(d=infaA|xa|)。计算结果最小的位置就是最佳位置。玩家出生位置会在这个位置附近。
    • NBT复合标签/JSON对象noise:世界生成参数。
      • 整型min_y:地形开始生成的最低高度。取值为-2032到2031的闭区间,必须是16的倍数(16k,127k126)。
      • 整型height:地形生成的总高度。取值为0到4064的闭区间,必须是16的整数倍(16k,0k254)。min_y + height不能超过2032。
      • 整型size_horizontal:取值为0到4的闭区间。
      • 整型size_vertical:取值为0到4的闭区间。
    • NBT复合标签/JSON对象noise_router:将密度函数应用于用于世界生成的噪声参数。以下每个字段可以填入一个密度函数ID或一个密度函数(包括常量形式和对象形式)。
      • 字符串双精度浮点数NBT复合标签/JSON对象initial_density_without_jaggedness:与含水层和地表规则的生成有关。在一XZ坐标下,从世界顶部开始以size_vertical*4个方块的精度从上到下查找,初次遇到大于25/64的值的高度作为世界生成的初始地表高度。该高度通常应该低于实际的地表高度(由final_density决定)。
      • 字符串双精度浮点数NBT复合标签/JSON对象final_density:决定了一个坐标是空气(可以生成含水层)还是世界的默认方块NBT复合标签/JSON对象default_block(将会被NBT复合标签/JSON对象surface_rule填充)。
      • 字符串双精度浮点数NBT复合标签/JSON对象barrier:影响是否使用方块分隔含水层和洞穴其他区域。函数值越大越有可能分隔。
      • 字符串双精度浮点数NBT复合标签/JSON对象fluid_level_floodedness:影响含水层生成液体的概率。函数值越大越有可能生成。该噪声值大于1.0的被视为1.0,小于-1.0的被视为-1.0。
      • 字符串双精度浮点数NBT复合标签/JSON对象fluid_level_spread:影响某处含水层液体表面的高度。函数值越小液体表面越可能较低。
      • 字符串双精度浮点数NBT复合标签/JSON对象lava:影响某处含水层是否使用熔岩代替水。阈值为0.3。
      • 字符串双精度浮点数NBT复合标签/JSON对象vein_toggle:影响矿脉类型和垂直范围。这值大于0.0将是铜矿脉,小于等于0.0将是铁矿脉。
      • 字符串双精度浮点数NBT复合标签/JSON对象vein_ridged:控制哪些方块会参与组成矿脉。如果小于0.0,则方块是矿脉的一部分(是否为矿石块由下方值决定)。
      • 字符串双精度浮点数NBT复合标签/JSON对象vein_gap:影响矿脉中的哪些方块将是矿石块。如果大于-0.3,并且随机数小于从0.4到0.6映射到0.1到0.3的vein_toggle的绝对值,则会放置矿石块,且有2%的概率变为粗金属块。否则,将放置矿脉类型对应的石块。
      • 字符串双精度浮点数NBT复合标签/JSON对象temperature:生物群系的温度噪声。这里和下方的六个值是用于生物群系放置的生物群系参数。某点处生物群系的生物群系参数向量与该点处的对应参数向量的2-范数距离是最小的。
      • 字符串双精度浮点数NBT复合标签/JSON对象vegetation:即humidity,生物群系的湿度噪声。
      • 字符串双精度浮点数NBT复合标签/JSON对象continents:生物群系的大陆性噪声。
      • 字符串双精度浮点数NBT复合标签/JSON对象erosion:生物群系的侵蚀噪声。
      • 字符串双精度浮点数NBT复合标签/JSON对象depth:生物群系的深度噪声。
      • 字符串双精度浮点数NBT复合标签/JSON对象ridges:即weirdness,生物群系的奇异噪声。
    • NBT复合标签/JSON对象surface_rule:(不能为空)为地形填充方块。

历史[编辑 | 编辑源代码]

Java版
1.16.220w28a加入了对自定义世界生成的支持。
20w29a噪声设置被移动到了worldgen/noise_settings目录下。
pre1自定义世界生成从data/minecraft/<type>/<namespace>/<path>移动到了data/<namespace>/<type>/<path>,和其他资源保持一致。
1.1720w49a向噪声设置加入了整型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.1821w37a移除了噪声设置的整型min_surface_level字段。
21w40a向噪声设置加入了布尔型noise.legacy_random_source参数。
21w41a向噪声设置加入了NBT复合标签/JSON对象surface_rule字段。
移除了噪声设置的noise.simplex_surface_noisenoise.random_density_offset字段。
主世界噪声设置的布尔型legacy_random_source参数现在设为false了。
21w42a将表面规则noise_thresholdname字段改为noise,指向数据包的data/命名空间/worldgen/noise的噪声文件。
移除了噪声设置的octaves字段,被噪声取代。
移除了噪声设置的布尔型noise.use_legacy_random字段。
21w43a向噪声设置加入了NBT复合标签/JSON对象noise.terrain_shaper字段,包含offset、​factor和​jaggedness三个参数。
21w44a向噪声设置加入了布尔型noise.large_biomes字段。
移除了噪声设置的单精度浮点数noise.density_factor单精度浮点数noise.density_offset字段。
移除了噪声设置的整型bedrock_roof_position整型bedrock_floor_position布尔型deepslate_enabled字段,被表面规则取代。
1.18.222w06a为结构噪声设置添加结构放置类型标签字段,包括random_spreadconcentric_rings两种可能的类型。
pre1向噪声设置加入了NBT复合标签/JSON对象noise_router字段,加入密度函数构成这一字段,并移除了noise_caves_enabled、​noodle_caves_enabled和​structures字段。
使用结构集取代了噪声设置中的结构放置类型,存储于worldgen/structure_set目录下,格式与原先一致。
1.1922w11a移除了噪声设置的NBT复合标签/JSON对象noise.terrain_shaper字段,将其功能移动到密度函数。
加入了NBT列表/JSON数组spawn_target字段,是一个生物群系气候参数区间/值的列表。
22w12a移除了噪声设置的noise.sampling、​noise.top_slide和​noise.bottom_slide字段,将其功能移动到密度函数。
1.19.322w42a世界生成设置数据现在内置于对应版本的client.jardata/minecraft/worldgen目录下。
1.21.224w33a现在整型sea_level还会影响生物生成、结构放置和生物群系温度。此前,由于部分海平面参数固定为63层,此值仅影响世界生成。

外部链接[编辑 | 编辑源代码]

导航[编辑 | 编辑源代码]