Skip to content

UserGuide.WorldgenReposition.zh

inf32768 edited this page Oct 22, 2026 · 2 revisions

English | 简体中文

世界生成重定位功能详解

世界生成重定位,即对世界生成坐标的偏移与缩放,是本模组的核心功能之一。此功能的机制较为复杂,下面将详细介绍。

这个功能能做什么?

  • 把整个世界的生成比例放大缩小(比如把山脉变成小土坡);
  • 让所有地形整体"搬家"(比如让整片森林向右平移);
  • 这是探索距离现象的重要工具(比如把边境之地搬到世界界限中)。

配置

重定位在配置界面中位于“世界生成设置” → “重定位”下,对应“偏移 (X, Y, Z)”和“缩放 (X, Y, Z)”;在配置文件中则是 worldGen.reposition.shift 和 worldGen.reposition.scale。下文所说的“偏移量”“缩放系数”均指这两个配置项的具体数值。

此外,下文提到的“高精度模式”和“Y 轴重定位扩展”均有独立的配置项,字段分别为 worldGen.reposition.highPrecisionMode 和 worldGen.reposition.extendedYAxisEffect。

关于具体如何配置,请参阅配置全解。

原理

首先,我们要引入一个概念—— “世界生成坐标”(简称“生成坐标”或“地形坐标”),区别于常见的“世界坐标”。 世界坐标(或者更具体的方块坐标)指的是方块在世界中的位置,而世界生成坐标则是指在生成世界时,生物群系、地形特征、生成结构、地物和初始生物的坐标。 正常情况下,这两者是一致的,而重定位功能,就是通过变换世界生成坐标,来改变世界坐标与世界生成坐标的对应关系,从而在保留原有世界界限的前提下生成更为广阔的世界。

那么,上述两个配置项是如何影响生成的世界的呢?先把坐标系分解为 XYZ 三个坐标轴,在每一轴上,有:

生成坐标 = 世界坐标 × 缩放系数 + 偏移量

由此,我们可以得到:

设置项 正值作用 负值作用
偏移 往该轴的负方向平移 往该轴的正方向平移
缩放 在该轴上压缩 在该轴上伸长

顺序为:先将原有世界生成偏移,再以世界坐标原点为中心缩放。

💡 示例说明(请看下图):

三个画面中心都在世界坐标 (0, y, 0),画面正上方为 X 轴正方向(正东)

  • 中间画面:原始未修改世界
  • 左侧画面:X轴位移为 10(所有地形集体向西移动10格)
  • 右侧画面:X轴缩放为 2(地形更加紧凑)

其他信息

支持的世界生成内容

  • 大多数生成式密度函数,包括:

    • old_blended_noise
    • noise
    • shifted_noise
    • shift_A
    • shift_B
    • shift
    • weird_scaled_sampler
    • y_clamped_gradient(需开启 Y 轴重定位扩展)
    • end_island(需开启高精度模式)
  • 各维度海平面和地底熔岩层(需开启 Y 轴重定位扩展,目前 bug 较多)

精度损失和高精度模式

通常情况下,配置项中的输入值会先被转换成双精度浮点数再用于运算,在输入值很大时,会存在精度损失的问题,最典型的表现就是偏移不准(比如你知道某个地形特征生成的具体坐标,但是你把坐标输入进去后发现无论如何微调坐标都无法把它移动到正确的位置)。同时,一部分生成器因使用整数进行坐标运算,与浮点数偏移和缩放不兼容,因此重定位无法实现。

因此,为了解决这个问题,模组提供了高精度模式。开启后,模组会将坐标和偏移缩放输入值一起转换成 BigDecimal 类型,并在运算时使用 BigDecimal 类型进行运算,从而避免了上述精度损失和偏移不准的问题。同时,那些使用整数运算的生成器,会自动切换到高精度运算方式,从而可以被偏移和缩放。

但是请注意,启用此功能后将显著增加 CPU 运算负荷及内存消耗,因此建议仅在必要时(如偏移量绝对值超过 2^53)开启。

Y 轴重定位扩展

Y 轴重定位扩展是模组的另一个功能,它允许缩放与偏移功能影响密度函数 y_clamped_gradient,以及各维度海平面和地底熔岩层的 Y 坐标。简单来说,启用此功能后,地形整体的海拔高度和洞穴生成的高度范围会受到偏移和缩放的影响。

之所以要给这些功能做独立的开关,是因为 y_clamped_gradient 限制了几乎所有地形的高度范围,若偏移此密度函数,则在不修改噪声设置的情况下,天空边境之地和虚空边境之地都不再生成,这会给许多场景带来不便。

为什么要有重定位功能?

重定位功能的引入,主要是为了满足探索距离现象的需求。 在原版 Minecraft 中,整数极限使得玩家可探索的距离被限制在较小的范围内,而大多数与世界生成有关的距离现象却都存在于这个范围之外。虽然确实有办法通过修改代码来突破这些限制,但通常工作量极大(需要修改几乎所有与坐标相关的代码)、兼容性堪忧(通常分发为独立的修改版,且无法与模组加载器共存),而且性能也很低下(容量更大的数据类型需要更多的内存和计算资源,大面积使用时尤为明显);而重定位技术通过在关键生成步骤动态修改坐标,虽然牺牲了一部分自由度,但在能得到相似结果的前提下,基本不存在上述任何问题。

Wiki 导航 | Navigation

🏠 首页 | Home

🧭 用户指南 | User Guide

📈 项目治理 | Project Management

📚 参考资料 | References

Clone this wiki locally