Skip to content

UserGuide.Configuration.zh

inf32768 edited this page Oct 24, 2026 · 8 revisions

English | 简体中文

配置全解

本文档是 Ultimate Scaler 配置系统(配置版本 4)的完整技术参考。它面向希望深入理解模组工作机制的高级用户、需要进行复杂或非标准配置的用户、开发者与潜在贡献者,以及需要查阅某个具体配置项的用户。

如果你需要快速上手,请直接使用游戏内的配置界面:它提供了标签、悬浮提示、输入校验和方块选择器。本文档是配置界面背后的参考手册。

打开与修改配置

  • 如果安装了 Cloth Config,按下快捷键(默认是 Ctrl+U),或在 Mod Menu 中点击本模组的图标,即可打开新版配置界面。
  • 在 Mod Menu 中按住 Shift 再点击模组图标,可以打开旧版配置界面。旧版界面已弃用,保留为不熟悉新版界面的老用户提供过渡选择,未来的新选项将不会加入旧版配置界面,将在未来版本中移除;本文档描述的是新版界面。
  • 配置文件位于 .minecraft/config/ultimate_scaler.toml,可以直接编辑。
  • 修改配置文件后,在游戏内执行 /reload 即可应用。带有 [ReS] 标签的选项需要重启游戏才能生效;带有 [ReE] 标签的选项可能需要重进世界(或重启服务端)才能生效。
  • 配置文件使用 TOML 格式。顶层是 CONFIG_VERSION,其余选项按表(table)分组,例如 [general] 和 [worldGen.reposition]。

强烈推荐新手使用配置界面。它的布局更直观,带有悬浮提示和输入校验,并提供方块选择器,而且会自动把配置写入文件。

配置文件结构

默认配置文件如下:

# Check out our GitHub Wiki for detailed explanations of all the configuration options:
# https://github.com/INF32768/UltimateScaler/wiki/UserGuide.Configuration.en

CONFIG_VERSION = 4

[general]
configScreenKeybind = 682
showTerrainPos = true
publicTerrainPos = true

[worldGen.reposition]
shift = ["0", "0", "0"]
scale = ["1", "1", "1"]
extendedYAxisEffect = false
highPrecisionMode = false

[worldGen.fluidReplace]
defaultFluid = ""
undergroundLava = ""

[worldGen.farLandsControl]
farLandsPos = "DEFAULT"
customDivisor = 3.3554432E7
limitReturnValue = false
maxLogarithmValue = 7

[fixesAndExpansion]
endRings = false
worldBorder = true
chunkGenerationOutOfBound = true
mineShaftCannotGenerate = true

[utilities]
expandDatapackValueRange = true

配置界面中的分类与配置文件中的表对应关系如下:

界面分类 / 子分类 配置表
常规设置 [general]
世界生成设置 → 重定位 [worldGen.reposition]
世界生成设置 → 流体替换 [worldGen.fluidReplace]
世界生成设置 → 边境之地控制 [worldGen.farLandsControl]
修复与扩展 [fixesAndExpansion]
实用工具 [utilities]
提示 不写入配置文件

提示分类只用于展示信息,不写入配置文件。它包含简短的欢迎语、指向本 Wiki 的链接、关于旧版界面的提示,以及通用标签的图例。

标签与元信息

新版配置界面使用简短的标签(labels)来描述配置项的状态和可能的影响。标签会显示在配置项显示名称的开头;将鼠标悬停在配置项上时,会在“【标签说明】”标题下显示完整的标签描述。

提示分类中包含通用标签的图例;修复与扩展分类中则单独包含该分类所使用的距离现象标签图例。

通用标签

标签 名称 含义
[Exp] 实验性(Experimental) 仍处于测试阶段,可能不稳定或存在风险。
[Fau] 可能不符合预期(Faultable) 此功能导致的现象可能不符合预期。
[Rad] 激进(Radical) 功能可能很强大,但可能具有副作用。
[ReS] 需要重启(Requires restart) 更改可能需要重启游戏才能生效。
[ReE] 需要重进世界(Requires re-enter) 更改可能需要重进世界(重启服务端)才能生效。
[LoP] 低性能(Low performance) 性能开销较高,可能导致卡顿。
[Opt] 优化(Optimization) 有助于优化性能或提高稳定性。
[Cln] 仅客户端(Client-only) 只影响本地显示或操作。
[Dual] 双端(Dual environment) 需要客户端和服务端同时开启才能生效。
[Srv] 仅服务端(Server-only) 服务端功能,客户端无需开启。
[SPO] 仅单人(Singleplayer only) 仅在单人游戏中才能正常生效。

距离现象标签

修复与扩展中的配置项还会带有一个距离现象标签。标签是一个带颜色的几何符号:形状表示问题的成因,颜色表示问题的影响类型。例如,蓝色的 ■ 表示“可能导致卡死或崩溃的整数溢出”。

修复与扩展分类的标签图例会列出以下符号和颜色。

符号(成因):

符号 名称 含义
■ 整数溢出 该问题由整数溢出导致。
● 精度损失 该问题由浮点数精度损失导致。
▲ 两者兼有 该问题同时存在整数溢出和精度损失的因素。
◆ 人为限制 该问题很可能是人为限制导致的。

颜色(影响):

颜色 名称 含义
蓝色 卡死或崩溃 该问题会导致游戏卡死或崩溃。
金色 客户端渲染 该问题会导致游戏客户端渲染出现异常。
深绿色 游戏逻辑 该问题会导致其他游戏逻辑出错。
黄色 世界生成 该问题会导致世界生成出现异常。

在下面的章节中,每个配置项都以配置文件路径和界面显示名称标识,并列出文件中的类型、默认值以及显示名称旁的标签。

常规设置

  • general.configScreenKeybind —— 配置界面快捷键 [Cln]

    • 类型:int
    • 默认值:682(Ctrl+U)

    打开新版配置界面的快捷键。在配置界面中点击对应按钮,然后按下想要的按键组合即可修改,支持 Ctrl、Alt 和 Shift。该快捷键只在客户端生效,因此带有 [Cln] 标签。

    该值是一个打包后的整数:(keyCode << 3) | modifier。低三位是修饰键位,从低位到高位依次为 Alt、Ctrl、Shift;其余高位是主按键的 GLFW 键控代码。例如,默认值 682 等于 (85 << 3) | 2:键控代码 85 对应 U,修饰键 2 对应 Ctrl。完整的 GLFW 键控代码列表可以在 GLFW 文档 中找到。

    在 V2/V3 中,该设置被拆分为 optionMenuKeyCode 和 optionMenuModifierValue;迁移时会把这两个旧值打包成这个字段。

  • general.showTerrainPos —— 在调试屏幕中显示地形坐标 [Cln]

    • 类型:boolean
    • 默认值:true

    若开启,则会在调试屏幕(F3)左侧的 XYZ 行和 Block 行之间添加一行 TerrainXYZ,显示玩家所在位置经过缩放和偏移后对应的地形(世界生成)坐标,格式与原版 XYZ 行类似。该显示使用双精度浮点数,可能存在精度损失。

    若同时开启了高精度模式(worldGen.reposition.highPrecisionMode),则主 TerrainXYZ 行会使用高精度十进制值,并额外显示一行 TerrainXYZ (double) 来展示双精度表示。

    showTerrainPos 开启时的调试屏幕示例。左侧为开启高精度模式时的显示,右侧为关闭时的显示。

世界生成设置

整个世界生成设置分类都是服务端功能([Srv]),其中的选项分为三个子分类:重定位、流体替换和边境之地控制。

重定位

shift 和 scale 都是恰好包含三个十进制值的数组,分别对应 X、Y、Z 轴。在配置文件中,它们以带引号的字符串保存,例如 ["0", "0", "0"]。这些引号是有意保留的:这样可以让模组保留 BigDecimal 的精度,而不是让 TOML 解析器先经过 Long 或 Double 转换。旧版 V4 文件中不带引号的数组仍然可以读取,模组会在解析前自动为它们补上引号。

  • worldGen.reposition.shift —— 偏移 (X, Y, Z)

    • 类型:3 个十进制字符串组成的数组(加载后为 BigDecimal[3])
    • 默认值:["0", "0", "0"]

    将世界生成平移指定的距离,单位为方块。三个元素分别对应 X、Y、Z 轴(在配置界面中从上到下)。在配置界面中,每个元素都可以填写普通数字(如 123.123)或科学计数法(如 1.23e4)。

    详细说明请参阅世界生成重定位功能详解。

  • worldGen.reposition.scale —— 缩放 (X, Y, Z)

    • 类型:3 个十进制字符串组成的数组(加载后为 BigDecimal[3])
    • 默认值:["1", "1", "1"]

    以世界原点为中心,将世界生成缩放指定的倍数。三个元素分别对应 X、Y、Z 轴(在配置界面中从上到下),支持的格式与 shift 相同。

    详细说明请参阅世界生成重定位功能详解。

  • worldGen.reposition.highPrecisionMode —— 高精度模式 [Exp] [Rad] [LoP]

    • 类型:boolean
    • 默认值:false

    若开启,则在重定位时使用高精度数据类型来计算坐标,以避免精度损失。同时,偏移和缩放功能可以应用到更多的生成器上。

    该选项可能显著增加 CPU 运算负荷和内存消耗,建议仅在必要时开启(例如偏移量绝对值超过 2^53 时)。

    该选项在旧版本中名为 BigInteger 重写。开启后,调试屏幕中 TerrainXYZ 行的显示方式也会发生变化,详见 general.showTerrainPos 的说明。

    详细说明请参阅世界生成重定位功能详解。

  • worldGen.reposition.extendedYAxisEffect —— Y 轴重定位扩展 [Exp] [Fau]

    • 类型:boolean
    • 默认值:false

    若开启,则偏移和缩放功能还会影响更多与 Y 轴密切相关的地形生成算法,例如地形海拔、海平面和地底熔岩层。

    该选项在旧版本中名为 Y 轴扩展偏移。

    详细说明请参阅世界生成重定位功能详解。

流体替换

在 V4 中,旧版的“布尔开关 + 方块 ID”成对字段被合并为每个功能一个方块 ID 字段。空字符串表示“禁用”;非空字符串表示要放置的方块 ID。在配置界面中,每个功能都是一个开关加一个方块下拉框;关闭开关时,该字段会写为空字符串。下拉框默认为空气,因此开启开关并保持空气选中时,会写入 "minecraft:air"。

  • worldGen.fluidReplace.defaultFluid —— 替换默认流体

    • 类型:String(方块 ID)
    • 默认值:""(禁用)

    若非空,则将各维度的默认流体(主世界的水、下界的熔岩)替换为指定的方块。通常替换成空气,以防止流体过多导致游戏卡顿。目前仅能替换海洋和含水层中的流体。

    该值是一个方块 ID,例如 "minecraft:water",可以省略前缀 "minecraft:"。加载配置时,无效的方块 ID 会被重置为空字符串。

    在 V2/V3 中,该设置被拆分为 replaceDefaultFluid(布尔值)和 replaceDefaultFluidBlock(字符串)。

  • worldGen.fluidReplace.undergroundLava —— 替换地底熔岩 [Exp] [Fau]

    • 类型:String(方块 ID)
    • 默认值:""(禁用)

    在生成含水层时,所有位置高度低于 Y = -54 并且低于本维度海平面高度的空气都会被填充为熔岩。这些熔岩被称为“地底熔岩”,其坐标和填充的方块都是硬编码的。

    若非空,则会将地底熔岩替换为指定的方块。该值是一个方块 ID,格式和校验规则与 defaultFluid 相同。由于含水层生成机制复杂,本功能目前存在较多 bug,请谨慎使用。

    在 V2/V3 中,该设置被拆分为 replaceUndergroundLava(布尔值)和 replaceUndergroundLavaBlock(字符串)。

边境之地控制

  • worldGen.farLandsControl.farLandsPos —— 边境之地位置

    • 类型:String(枚举)
    • 默认值:"DEFAULT"
    • 可选值:BETA、RELEASE、DEFAULT、REMOVED

    该选项通过更改 maintainPrecision 方法来控制边境之地的位置,进而影响允许的噪声采样溢出坐标:

    值 界面显示名称 描述 噪声溢出坐标 边境之地位置(鼠标悬停以显示完整坐标)
    BETA Beta 1.7.3 前 Java 版 Infdev 20100327 至 Beta 1.7.3 以及基岩版的“经典的”边境之地位置。 231 12550824
    RELEASE Beta 1.8 ~ 1.13.2 Java 版 Beta 1.8 至正式版 1.13.2 的边境之地位置。 263 5.3905e+16
    DEFAULT 默认 Java 版 1.14 至今的边境之地位置。可以通过 customDivisor 修改除数。 288 1.8088e+24
    REMOVED 移除 移除传统意义上的边境之地和所有噪声溢出。 21024 N/A

    旧版的 CUSTOM 值已不存在。它之所以被移除,是因为它带有误导性:它并不能把边境之地移动到任意指定位置,而是修改 maintainPrecision 的除数,在改变地形生成行为的同时,使边境之地作为连带结果发生移动。需要调整这一行为的高级用户,仍然可以在选择 DEFAULT 后修改 customDivisor;customDivisor 为 33554432 时,行为与原版 1.14+ 一致。旧版 V3 配置中的 CUSTOM 会迁移为 DEFAULT,并保留原来的除数;旧版 V3 配置中的 DEFAULT 会迁移为 DEFAULT,除数为 33554432。

    选择 DEFAULT 时,各层边境之地的位置为 (2^63 * 除数 + 2^31) / 坐标比例,其中“除数”就是 customDivisor。若除数小于 2^9、大于 2^32 或不是 2 的整数倍,都会影响正常地形生成。

    关于此配置项和 maintainPrecision 方法的深入研究,请参考文章 maintainPrecision 方法。

  • worldGen.farLandsControl.customDivisor —— maintainPrecision 方法除数

    • 类型:double
    • 默认值:33554432(在 TOML 文件中写作 3.3554432E7)
    • 显示条件:farLandsPos == "DEFAULT"

    maintainPrecision 方法使用的除数。配置界面显示为 33554432,TOML 文件则把这个 double 值写作 3.3554432E7。修改该值会改变方法的行为,也可能影响正常地形生成,因此它并不是一个直接“把边境之地移动到指定位置”的选项。customDivisor 为 33554432 时,行为与原版 1.14+ 一致。旧版的 CUSTOM 选项等价于 DEFAULT 加上一个非默认的除数。

    在 V2/V3 中,该字段名为 maintainPrecisionCustomDivisor。

  • worldGen.farLandsControl.limitReturnValue —— 限制 maintainPrecision 方法返回值 [Fau]

    • 类型:boolean
    • 默认值:false

    若开启,则会限制 maintainPrecision 方法的返回值范围,详见下一项。

  • worldGen.farLandsControl.maxLogarithmValue —— 最大返回值(10^n)

    • 类型:int
    • 默认值:7
    • 显示条件:limitReturnValue == true

    若 limitReturnValue 开启,则会限制 maintainPrecision 方法返回值的绝对值,使其不超过 10^maxLogarithmValue。

    此值小于 26 将阻止边缘之地生成(这是其设计用途),小于 9 则会阻止噪声溢出(即边境之地不再生成)。过小的值同样会导致正常地形出现问题,详见 maintainPrecision 方法 中的“限制返回值范围”部分。

修复与扩展

该分类中的选项都与距离现象有关。每个选项都带有一个距离现象标签;符号和颜色的图例见距离现象标签。该分类在配置界面中还包含一个标签图例子分类,用于展示同一份图例。

  • fixesAndExpansion.endRings —— 末地环 [Srv] ■(黄色)

    • 类型:boolean
    • 默认值:false

    “末地环”是一种存在于末地中的距离现象。由于整数溢出,末地的地形会在以世界原点为中心的若干个圆形区域中缺失(MC-159283),这些区域被称为“末地环”。该现象从 X/Z = ±370,720 至 524,287 开始出现,直到 X 和 Z 都为 ±30,000,317 时在世界界限范围内发生最后一次,共发生 6,549 次。(本段摘自 Minecraft Wiki)

    开启此选项后,“末地环”将被修复(不再生成)。

  • fixesAndExpansion.worldBorder —— 世界边界 [Dual] [ReS] ◆(深绿色)

    • 类型:boolean
    • 默认值:true

    移除 X/Z = ±30000000 处的空气墙,玩家可以在更远处进行探索,世界生成也可以在这之外进行。同时,/tp、/worldborder 等命令中坐标参数的范围限制也会被移除。

    世界边界本身仍然存在,但可以通过 /worldborder 命令将其边长设置为非常大的值,效果类似于移除。

    该选项需要客户端和服务端同时开启,并且更改可能需要重启游戏才能生效。

  • fixesAndExpansion.chunkGenerationOutOfBound —— 远处生成区块崩溃 [Srv] ◆(蓝色)

    • 类型:boolean
    • 默认值:true

    从 1.21.2 开始,Minecraft 添加了一个人为的限制,在生成区块前会检查将要生成的区块的 X/Z 坐标是否超过 ±33552992(方块坐标)。若是,则会抛出 IllegalStateException("Trying to create chunk out of reasonable bounds: " + pos) 异常并导致游戏崩溃。

    开启此选项后,该限制将被移除,生成器可以在更远处生成区块。

  • fixesAndExpansion.mineShaftCannotGenerate —— 生成废弃矿井崩溃 [Srv] ■(蓝色)

    • 类型:boolean
    • 默认值:true

    从 1.21.x 开始,由于整数溢出,试图在 X/Z 坐标超过 ±1073741824 的位置生成废弃矿井时,会导致游戏崩溃。开启此选项后,废弃矿井的正常生成范围将被扩展到 32 位整数的范围。

实用工具

  • utilities.expandDatapackValueRange —— 扩展数据包字面量取值范围 [Srv] [ReS]

    • 类型:boolean
    • 默认值:true

    在数据包的密度函数定义文件中,许多字面量的取值范围都受到人为限制,包括常数取值以及密度函数 minecraft:old_blended_noise 中各参数的取值。开启此选项后,这些限制将被解除。更改可能需要重启游戏才能生效。

不在配置界面中的配置项

  • CONFIG_VERSION

    • 类型:int
    • 默认值:4

    配置文件版本号,用于检查是否需要更新或迁移。请勿手动修改。

  • general.publicTerrainPos

    • 类型:boolean
    • 默认值:true
    • 尚未实现,目前没有任何效果。

    该选项不在配置界面中显示。如果将来在服务端实现,服务器内的所有玩家都可以在调试屏幕中看到 TerrainXYZ 行,其数据由服务端同步。

加载、保存与迁移

加载与兜底行为

配置会在启动时加载,并在每次执行 /reload 时重新读取。首次启动时,如果配置文件不存在,模组会创建一个默认配置文件。只有在新配置被完整读取、迁移并校验成功之后,才会替换当前正在使用的配置。

如果加载过程中出现任何错误(读取错误、V2/V3 迁移错误或校验错误),模组会继续使用重载前正在使用的配置,并将它写回文件。如果此前没有成功加载过配置(例如启动时的第一次加载),才会使用默认值。重载时配置文件不存在也属于这种情况:模组会保留重载前的配置并写回,而不是立即重置为默认值。

在用兜底配置覆盖现有文件之前,模组会先把它备份为 ultimate_scaler.toml.bak。如果备份创建失败,则不会覆盖现有文件,但内存中仍会继续使用兜底配置;如果兜底配置写回也失败,内存中同样会继续使用它。每次失败都会覆盖这个备份文件,因此它只是一个安全网,而不是完整的历史版本记录。

保存配置时,模组会先写入一个临时文件,再替换目标文件。文件系统支持原子移动时,替换是原子的;不支持时则退化为普通替换。这样可以避免写入中途失败把原文件截断。

从 V2/V3 迁移

V2 和 V3 配置文件会自动迁移到 V4。V2 文件为 config/ultimatescaler.toml;只有在 V4 文件成功保存后,旧的 V2 文件才会被删除。V3 文件在迁移成功后会由 V4 文件替换。如果迁移失败,上述兜底行为会保留旧配置并备份旧文件;如果迁移结果保存失败,旧文件会被保留,以便下次加载时重试迁移。

V2/V3 字段 V4 字段 说明
optionMenuKeyCode + optionMenuModifierValue general.configScreenKeybind 打包为 (keyCode << 3) | modifier。
showTerrainPos general.showTerrainPos
publicTerrainPos general.publicTerrainPos
globalBigDecimalOffset worldGen.reposition.shift V4 中保存为带引号的十进制字符串;旧版不带引号的数组会自动转换。
globalBigDecimalScale worldGen.reposition.scale 规则同上。
bigIntegerRewrite worldGen.reposition.highPrecisionMode
extraYOffset worldGen.reposition.extendedYAxisEffect
replaceDefaultFluid + replaceDefaultFluidBlock worldGen.fluidReplace.defaultFluid 旧开关关闭时为空字符串,否则为旧的方块 ID。
replaceUndergroundLava + replaceUndergroundLavaBlock worldGen.fluidReplace.undergroundLava 规则同上。
farLandsPos worldGen.farLandsControl.farLandsPos CUSTOM 会变为 DEFAULT,并保留旧除数。
maintainPrecisionCustomDivisor worldGen.farLandsControl.customDivisor
limitReturnValue worldGen.farLandsControl.limitReturnValue
maxNoiseLogarithmValue worldGen.farLandsControl.maxLogarithmValue
fixEndRings fixesAndExpansion.endRings
expandWorldBorder fixesAndExpansion.worldBorder
fixChunkGenerationOutOfBound fixesAndExpansion.chunkGenerationOutOfBound
fixMineshaftCannotGenerate fixesAndExpansion.mineShaftCannotGenerate
expandDatapackValueRange utilities.expandDatapackValueRange
CONFIG_VERSION = 3 CONFIG_VERSION = 4 自动完成。

Wiki 导航 | Navigation

🏠 首页 | Home

🧭 用户指南 | User Guide

📈 项目治理 | Project Management

📚 参考资料 | References

Clone this wiki locally