Repository navigation
UserGuide.Configuration.en
English | 简体中文
This document is the complete technical reference for the Ultimate Scaler configuration system (config version 4). It is intended for advanced users who want to understand how the mod works, for non-standard setups, for developers and contributors, and for users who need to look up a specific option.
If you are looking for a quick start, use the in-game configuration screen: it provides labels, tooltips, input validation and block selection. This document is the reference manual behind that screen.
- If Cloth Config is installed, press the hotkey (default
Ctrl+U) or click the mod's icon in Mod Menu to open the new configuration screen. - Holding
Shiftwhile clicking the mod's icon opens the old configuration screen. The old screen has been deprecated and is retained to provide a transitional option for users unfamiliar with the new screen. Future new options will not be added to the old screen and it will be removed in future versions. This reference describes the new screen. - The configuration file is located at
.minecraft/config/ultimate_scaler.toml. It can be edited directly. - After editing the file, run
/reloadin-game to apply the changes. Options marked[ReS]only take effect after restarting the game; options marked[ReE]may require re-entering the world (or restarting the server). - The configuration file is TOML. The top level contains
CONFIG_VERSION; all options are grouped into tables such as[general]and[worldGen.reposition].
It is highly recommended that new users use the configuration screen. It offers a more intuitive layout, tooltips, input validation, and a block picker, and it writes the file for you.
A default configuration file looks like this:
# 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 = trueThe GUI categories correspond to the file as follows:
| GUI category / subcategory | Configuration table |
|---|---|
| General Settings | [general] |
| World Generation Settings → Reposition | [worldGen.reposition] |
| World Generation Settings → Fluid Replacement | [worldGen.fluidReplace] |
| World Generation Settings → Far Lands Control | [worldGen.farLandsControl] |
| Fixes And Expansion | [fixesAndExpansion] |
| Utilities | [utilities] |
| Hints | Not saved |
The Hints category is informational only. It contains a short introduction, a link to this Wiki, a note about the old screen, and the legend for the general labels.
The new screen uses short labels (tags) to describe an option's status and side effects. A tag is prefixed to the
option's display name, and hovering over the option shows the full label descriptions under a [Labels Description]
heading.
The Hints category contains the legend for the general labels. Fixes And Expansion contains a separate legend for the distance-effect labels used by its options.
| Tag | Name | Meaning |
|---|---|---|
[Exp] |
Experimental | Still in the testing phase; may be unstable or risky. |
[Fau] |
Faultable | The effects of this feature may not work as expected. |
[Rad] |
Radical | Powerful, but may have side effects. |
[ReS] |
Requires restart | Changes may require restarting the game to take effect. |
[ReE] |
Requires re-enter | Changes may require re-entering the world (restarting the server). |
[LoP] |
Low performance | High performance cost; may cause lag. |
[Opt] |
Optimization | Helps optimize performance or improve stability. |
[Cln] |
Client-only | Only affects local display/operation. |
[Dual] |
Dual environment | Requires both the client and the server to be enabled. |
[Srv] |
Server-only | Server-side feature; the client does not need to enable it. |
[SPO] |
Singleplayer only | Only works properly in singleplayer mode. |
Options in Fixes And Expansion also carry a distance-effect tag. The tag is a colored geometric symbol: the shape
describes the cause of the problem, and the color describes the type of effect. For example, a blue ■ means
"integer overflow that can cause a crash or freeze".
The Fixes And Expansion legend lists the following symbols and colors.
Symbols (cause):
| Symbol | Name | Meaning |
|---|---|---|
■ |
Integer overflow | The problem is caused by integer overflow. |
● |
Precision loss | The problem is caused by floating-point precision loss. |
▲ |
Both | The problem involves both integer overflow and precision loss. |
◆ |
Intended restriction | The problem is most likely due to an intended restriction. |
Colors (effect):
| Color | Name | Meaning |
|---|---|---|
| Blue | Crash or freeze | The problem can cause the game to freeze or crash. |
| Gold | Client rendering | The problem can cause the client to render abnormally. |
| Dark green | Game logic | The problem can cause other game logic errors. |
| Yellow | World generation | The problem can cause world generation to behave abnormally. |
In the sections below, each option is identified by its configuration path and its GUI display name. The type and default value describe the configuration file; labels are shown next to the display name.
-
general.configScreenKeybind— Open Config Menu Key[Cln]- Type:
int - Default:
682(Ctrl+U)
The keybinding that opens the new configuration screen. In the screen, click the button and press the desired key combination;
Ctrl,Alt, andShiftare supported. The screen is client-side, hence the[Cln]label.The value is a packed integer:
(keyCode << 3) | modifier. The low three bits are the modifier bits, from lowest to highest:Alt,Ctrl,Shift. The remaining bits are the GLFW key code of the main key. For example, the default682is(85 << 3) | 2: key code85isU, and modifier2isCtrl. A complete list of GLFW key codes can be found in the GLFW documentation.In V2/V3 this was split into
optionMenuKeyCodeandoptionMenuModifierValue; the migration packs the two old values into this single field. - Type:
-
general.showTerrainPos— Show Terrain Position in Debug Screen[Cln]- Type:
boolean - Default:
true
If enabled, adds a
TerrainXYZline to the left side of the debug screen (F3), between theXYZline and theBlockline. It displays the terrain (world generation) coordinates corresponding to the player's position after shift and scaling, formatted similarly to the vanillaXYZline. The double-precision display may lose precision.If High Precision Mode (
worldGen.reposition.highPrecisionMode) is enabled, the mainTerrainXYZline uses a high-precision decimal value, and an additionalTerrainXYZ (double)line shows the double-precision representation.
Example debug screen with showTerrainPosenabled. The left side shows the display with High Precision Mode enabled; the right side shows it with High Precision Mode disabled. - Type:
The whole World Generation Settings category is server-side ([Srv]). Its options are grouped into three
subcategories: Reposition, Fluid Replacement, and Far Lands Control.
Both shift and scale are arrays of exactly three decimal values, corresponding to the X, Y, and Z axes. In the
file they are stored as quoted strings, for example ["0", "0", "0"]. The quotes are intentional: they let the mod
preserve BigDecimal precision instead of letting the TOML parser convert the values through Long or Double.
Unquoted arrays from older V4 files are still accepted and are quoted automatically before parsing.
-
worldGen.reposition.shift— Shift (X, Y, Z)- Type: array of 3 decimal strings (
BigDecimal[3]after loading) - Default:
["0", "0", "0"]
Translates world generation by the specified distance, in blocks. The three elements correspond to the X, Y, and Z axes (top to bottom in the GUI). In the GUI, each element accepts a plain number (e.g.,
123.123) or scientific notation (e.g.,1.23e4).For details, see Worldgen Reposition Explanation.
- Type: array of 3 decimal strings (
-
worldGen.reposition.scale— Scale (X, Y, Z)- Type: array of 3 decimal strings (
BigDecimal[3]after loading) - Default:
["1", "1", "1"]
Scales world generation by the specified factor, centered on the world origin. The three elements correspond to the X, Y, and Z axes (top to bottom in the GUI). The accepted formats are the same as for
shift.For details, see Worldgen Reposition Explanation.
- Type: array of 3 decimal strings (
-
worldGen.reposition.highPrecisionMode— High Precision Mode[Exp][Rad][LoP]- Type:
boolean - Default:
false
If enabled, high-precision data types are used for coordinate calculations during shift and scaling, preventing precision loss. It also allows shift and scaling to be applied to more generators.
This option may significantly increase CPU load and memory consumption. Enable it only when necessary (for example, when the absolute shift value exceeds 2^53).
This option was called BigInteger Rewrite in older versions. When enabled, it also changes the debug screen display as described under
general.showTerrainPos.For details, see Worldgen Reposition Explanation.
- Type:
-
worldGen.reposition.extendedYAxisEffect— Extra Y-axis Effect[Exp][Fau]- Type:
boolean - Default:
false
If enabled, shift and scaling also affect terrain generation algorithms that are closely related to the Y-axis, such as terrain height, sea level, and underground lava layers.
This option was called Extra Y-axis Offset in older versions.
For details, see Worldgen Reposition Explanation.
- Type:
In V4, the old boolean + block ID pairs are merged into a single block ID field per feature. An empty string means
"disabled"; a non-empty value is the block ID to place. In the GUI, each feature is a toggle plus a block dropdown; when
the toggle is off, the field is written as an empty string. The dropdown defaults to Air, so enabling a toggle and
leaving Air selected writes "minecraft:air".
-
worldGen.fluidReplace.defaultFluid— Replace Default Fluid- Type:
String(block ID) - Default:
""(disabled)
If non-empty, the default fluid in each dimension (water in the Overworld, lava in the Nether) is replaced with the specified block. This is commonly set to air to prevent excessive fluid generation from causing lag. Currently, this only replaces fluids in oceans and aquifers.
The value is a block ID, e.g.,
"minecraft:water". The"minecraft:"prefix can be omitted. Invalid block IDs are reset to an empty string when the configuration is loaded.In V2/V3 this was split into
replaceDefaultFluid(boolean) andreplaceDefaultFluidBlock(string). - Type:
-
worldGen.fluidReplace.undergroundLava— Replace Underground Lava[Exp][Fau]- Type:
String(block ID) - Default:
""(disabled)
During aquifer generation, air blocks below Y = -54 and below the dimension's sea level are filled with lava. This lava is referred to as "underground lava". Both the coordinates and the filled block are hardcoded.
If non-empty, the underground lava is replaced with the specified block. The value is a block ID, with the same format and validation as
defaultFluid. Due to the complexity of aquifer generation, this feature currently has several bugs and should be used with caution.In V2/V3 this was split into
replaceUndergroundLava(boolean) andreplaceUndergroundLavaBlock(string). - Type:
-
worldGen.farLandsControl.farLandsPos— Far Lands Position- Type:
String(enum) - Default:
"DEFAULT" - Accepted values:
BETA,RELEASE,DEFAULT,REMOVED
This option controls the position of the Far Lands by modifying the
maintainPrecisionmethod, which affects the overflow coordinates for noise sampling:Value GUI name Description Noise overflow coordinates Far Lands position (hover for full value) BETAPre Beta 1.7.3 The "classic" Far Lands position from Java Edition Infdev 20100327 to Beta 1.7.3, as well as Bedrock Edition. 231 12550824 RELEASEBeta 1.8 ~ 1.13.2 The Far Lands position from Java Edition Beta 1.8 to 1.13.2. 263 5.3905e+16 DEFAULTDefault The Far Lands position from Java Edition 1.14 onwards. The divisor can be changed with customDivisor.288 1.8088e+24 REMOVEDRemoved Removes the traditional Far Lands and all noise overflow. 21024 N/A The old
CUSTOMvalue no longer exists. It was misleading: it did not move the Far Lands to an arbitrary chosen position, but changed themaintainPrecisiondivisor, altering terrain generation and shifting the Far Lands as a side effect. Advanced users can still changecustomDivisorwhileDEFAULTis selected; acustomDivisorof33554432reproduces the vanilla 1.14+ behavior. Old V3 configurations withCUSTOMmigrate toDEFAULTwith the old divisor preserved; old V3DEFAULTconfigurations migrate with33554432.For
DEFAULT, the position of the various Far Lands layers is(2^63 * divisor + 2^31) / coordinate scale, wheredivisoriscustomDivisor. If the divisor is less than 2^9, greater than 2^32, or not an integer multiple of 2, it will affect normal terrain generation.For in-depth research on this option and the
maintainPrecisionmethod, see maintainPrecision Method. - Type:
-
worldGen.farLandsControl.customDivisor— maintainPrecision Divisor- Type:
double - Default:
33554432(written as3.3554432E7in the TOML file) - Shown when:
farLandsPos == "DEFAULT"
The divisor used by the
maintainPrecisionmethod. The GUI displays it as33554432; the TOML file writes the double value as3.3554432E7. Changing it alters the method's behavior and can also affect normal terrain generation, so it is not a direct "move the Far Lands to a chosen position" control. AcustomDivisorof33554432reproduces the vanilla 1.14+ behavior. The oldCUSTOMoption is equivalent toDEFAULTplus a non-default divisor.In V2/V3 this field was called
maintainPrecisionCustomDivisor. - Type:
-
worldGen.farLandsControl.limitReturnValue— Limit maintainPrecision Return Value[Fau]- Type:
boolean - Default:
false
If enabled, limits the return value range of the
maintainPrecisionmethod. See the next option for details. - Type:
-
worldGen.farLandsControl.maxLogarithmValue— Max Return Value (10^n)- Type:
int - Default:
7 - Shown when:
limitReturnValue == true
If
limitReturnValueis enabled, limits the absolute value of themaintainPrecisionreturn value to not exceed10^maxLogarithmValue.Setting this value below 26 prevents the Edge Lands from generating (its designed purpose). Setting it below 9 prevents noise overflow entirely (meaning the Far Lands will no longer generate). Values that are too small will also cause issues with normal terrain generation. See the maintainPrecision method for details.
- Type:
The options in this category are related to distance effects. Each option carries a distance-effect tag; see Distance-Effect Labels for the symbol and color legend. The category also contains a Labels Legend subcategory that shows the same legend in-game.
-
fixesAndExpansion.endRings— End Rings[Srv]■(yellow)- Type:
boolean - Default:
false
"End Rings" are a distance effect present in the End dimension. Due to integer overflow, terrain in the End is missing within several circular rings centered on the world origin (MC-159283). These missing areas are called "End Rings". The phenomenon first appears between X/Z = ±370,720 and 524,287, and occurs 6,549 times in total, with the final occurrence at X and Z = ±30,000,317 within the world border limit.
(Excerpt adapted from the Minecraft Wiki.)
Enabling this option repairs the End Rings (they will no longer generate).
- Type:
-
fixesAndExpansion.worldBorder— World Border[Dual][ReS]◆(dark green)- Type:
boolean - Default:
true
Removes the invisible wall at X/Z = ±30000000, allowing players to explore further out and enabling world generation beyond this point. It also removes coordinate limits for commands such as
/tpand/worldborder.The world border itself still exists, but its size can be set to very large values with the
/worldbordercommand, effectively making it irrelevant.This option requires both the client and the server to be enabled, and changes may require restarting the game.
- Type:
-
fixesAndExpansion.chunkGenerationOutOfBound— Chunk Generation Crash at Distance[Srv]◆(blue)- Type:
boolean - Default:
true
Starting from version 1.21.2, Minecraft introduced an artificial limit that checks whether the X/Z coordinates of a chunk to be generated exceed ±33552992 (block coordinates). If they do, it throws
IllegalStateException("Trying to create chunk out of reasonable bounds: " + pos)and crashes the game.Enabling this option removes this restriction, allowing the generator to create chunks further away.
- Type:
-
fixesAndExpansion.mineShaftCannotGenerate— Mineshaft Generation Crash[Srv]■(blue)- Type:
boolean - Default:
true
Starting from version 1.21.x, due to integer overflow, attempting to generate mineshafts at X/Z coordinates exceeding ±1073741824 causes the game to crash. Enabling this option extends the valid generation range for mineshafts to the full 32-bit integer range.
- Type:
-
utilities.expandDatapackValueRange— Expand Datapack Value Range[Srv][ReS]- Type:
boolean - Default:
true
In datapack density function definition files, the range of many literal values is artificially limited, including constant values and the arguments of the density function
minecraft:old_blended_noise. Enabling this option removes these restrictions. Changes may require restarting the game. - Type:
-
CONFIG_VERSION- Type:
int - Default:
4
Configuration file version number. Used to check whether an update or migration is needed. Do not modify it manually.
- Type:
-
general.publicTerrainPos- Type:
boolean - Default:
true - Not implemented; currently has no effect.
This option is not shown in the GUI. If it is implemented on a server, all players on that server would be able to see the
TerrainXYZline in their debug screen, synchronized from the server. - Type:
The configuration is loaded at startup and whenever /reload is executed. On first launch, if no configuration file
exists, a default file is created. A new configuration only replaces the active one after it has been read, migrated,
and validated successfully.
If loading fails at any point (a read error, a V2/V3 migration error, or a validation error), the mod keeps the configuration that was active before the reload and writes it back to the file. If there is no previous configuration — for example, on the first load at startup — the mod uses default values. This also applies when the file is missing during a reload: the previously loaded configuration is kept and written back instead of immediately resetting to the defaults.
Before overwriting an existing file with the fallback configuration, the mod creates a backup at
ultimate_scaler.toml.bak. If the backup cannot be created, the existing file is left untouched; the in-memory
fallback configuration is still used. If writing the fallback itself fails, the in-memory configuration is still used
as well. The backup is overwritten on each failure, so it is a safety net rather than a full version history.
Saves use a temporary file followed by a replacement. When the filesystem supports atomic moves, the replacement is atomic; otherwise a normal replace is used. This prevents a failed write from truncating the existing file.
V2 and V3 files are migrated automatically to V4. The V2 file is config/ultimatescaler.toml; it is deleted only after
the V4 file has been saved successfully. A V3 file is replaced by the V4 file after a successful migration. If migration fails, the fallback
behavior above keeps the previous configuration and backs up the old file. If saving the migrated file fails, the old
file is kept so the migration can be retried on the next load.
| V2/V3 field | V4 field | Notes |
|---|---|---|
optionMenuKeyCode + optionMenuModifierValue
|
general.configScreenKeybind |
Packed as (keyCode << 3) | modifier. |
showTerrainPos |
general.showTerrainPos |
|
publicTerrainPos |
general.publicTerrainPos |
|
globalBigDecimalOffset |
worldGen.reposition.shift |
Stored as quoted decimal strings in V4; unquoted legacy arrays are converted automatically. |
globalBigDecimalScale |
worldGen.reposition.scale |
Same rule as above. |
bigIntegerRewrite |
worldGen.reposition.highPrecisionMode |
|
extraYOffset |
worldGen.reposition.extendedYAxisEffect |
|
replaceDefaultFluid + replaceDefaultFluidBlock
|
worldGen.fluidReplace.defaultFluid |
Empty if the old toggle was off; otherwise the old block ID. |
replaceUndergroundLava + replaceUndergroundLavaBlock
|
worldGen.fluidReplace.undergroundLava |
Same rule as above. |
farLandsPos |
worldGen.farLandsControl.farLandsPos |
CUSTOM becomes DEFAULT; the old divisor is preserved. |
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 |
Automatic. |
Licensed under CC BY-NC-SA 3.0 license otherwise stated
🧭 用户指南 | User Guide
- 配置全解 | Configuration Reference
- 世界重定位功能详解 | Worldgen Reposition
- 命令/locate pos | /locate pos
- 常见问题 | FAQ
📈 项目治理 | Project Management
📚 参考资料 | References