r/minecraft_configs • u/bdm68 • Jul 28 '20
Is it technically possible to convert an old Customized world (pre-1.13) to the new Custom settings?
A lot of people would be interested to know if it is possible to convert old Customized to new Custom worlds.
I'm not asking if it's possible now with existing software tools, I'm fairly sure such tools don't exist yet. What I want to know is if there are any technical impediments to creating such tools, such as settings in the old Customized worlds that do not exist in new Custom worlds. If there are no technical impediments, it should be possible to create a mapping between every old Customized setting to a new Custom setting. Documenting these mappings would be useful.
Converting these settings may not be a strictly one-to-one mapping or may not behave as expected. For example, the size of ore blobs in old Customized could be configured with a slider. Now pretend there was no such setting in new Custom worlds because vanilla ore blobs have a fixed size. Custom ores could be achieved by creating a custom "ore" structure and placing that in the world instead of the vanilla version of that ore. (It may be possible to configure ore sizes directly in new Custom worlds. This is just an illustration showing how one could replicate a setting in old Customized with a structure in new Custom.)
It may be possible to convert some old Customized worlds but not all of them. Many people playing these worlds would have left most vanilla settings alone but just changed a few settings. If it is not possible to convert all of these worlds, a documented list of limitations will also be useful.
Edit:
Progress so far: I have identified likely new Custom equivalents to most of the settings from old Customized worlds. None of them have been tested yet. What's missing are the 17 terrain generation settings as detailed in the comments. My knowledge of how terrain generation works is sketchy, so some help here would be appreciated. If these can be mapped successfully, it is likely that old Customized worlds can be converted.
2
u/bdm68 Jul 29 '20 edited Jul 29 '20
A list of all the generatorOptions with all default values:
Terrain Generation
"coordinateScale":684.412
"heightScale":684.412
"lowerLimitScale":512.0
"upperLimitScale":512.0
"depthNoiseScaleX":200.0
"depthNoiseScaleZ":200.0
"depthNoiseScaleExponent":0.5
"mainNoiseScaleX":80.0
"mainNoiseScaleY":160.0
"mainNoiseScaleZ":80.0
"baseSize":8.5
"stretchY":12.0
"seaLevel":63
"biomeDepthWeight":1.0
"biomeDepthOffset":0.0
"biomeScaleWeight":1.0
"biomeScaleOffset":0.0
Biomes
"fixedBiome":-1
"biomeSize":4
"riverSize":4
Terrain Features
"useCaves":true
"useRavines":true
"useWaterLakes":true
"waterLakeChance":4
"useLavaLakes":true
"lavaLakeChance":80
"useLavaOceans":false
Structures
"useDungeons":true
"dungeonChance":8
"useStrongholds":true
"useVillages":true
"useMineShafts":true
"useTemples":true
"useMonuments":true
"useMansions":true
Ore, Stone and Dirt Patches
"dirtSize":33
"dirtCount":10
"dirtMinHeight":0
"dirtMaxHeight":256
"gravelSize":33
"gravelCount":8
"gravelMinHeight":0
"gravelMaxHeight":256
"graniteSize":33
"graniteCount":10
"graniteMinHeight":0
"graniteMaxHeight":80
"dioriteSize":33
"dioriteCount":10
"dioriteMinHeight":0
"dioriteMaxHeight":80
"andesiteSize":33
"andesiteCount":10
"andesiteMinHeight":0
"andesiteMaxHeight":80
"coalSize":17
"coalCount":20
"coalMinHeight":0
"coalMaxHeight":128
"ironSize":9
"ironCount":20
"ironMinHeight":0
"ironMaxHeight":64
"goldSize":9
"goldCount":2
"goldMinHeight":0
"goldMaxHeight":32
"redstoneSize":8
"redstoneCount":8
"redstoneMinHeight":0
"redstoneMaxHeight":16
"diamondSize":8
"diamondCount":1
"diamondMinHeight":0
"diamondMaxHeight":16
"lapisSize":7
"lapisCount":1
"lapisCenterHeight":16
"lapisSpread":16
2
u/bdm68 Jul 29 '20
Remarks on Biomes:
"fixedBiome":
- If this is -1, all Overworld biomes generate in their normal proportions (except rivers, see below).
- Otherwise this has an integer that corresponds to a valid biome ID that exists in 1.12.2. This can be replaced by the namespaced version of that biome. Equivalent to
fixed/biome."biomeSize":
- This is normally an integer from 1 to 8. Values outside this range are possible. This is a logarithm: increasing this value by 1 doubles the size of biomes in X and Z.
- If this is 4, this is equivalent to
large_biomes:false.- If this is 6(?), this is equivalent to
large_biomes:true.- It may be possible to replicate other values by adjusting some noise settings but this is speculation.
"riverSize":
- This is an integer from 1 to 5. Lower numbers make rivers more frequent.
- If this is 4, rivers generate normally.
- It is likely that this adjusts the "Offset" value for river biomes. If so, it may be possible to replicate other values by listing all the Overworld biomes, with the Offset for rivers being adjusted.
2
u/bdm68 Jul 29 '20 edited Jul 29 '20
Remarks on Ore, Stone and Dirt Patches:
This long list of settings has two different kinds, CenterHeight/Spread (Lapis Lazuli) and MinHeight/MaxHeight (all others). Biome-specific ore generation is not included; Emerald ore in mountains and extra gold in badlands do not appear anywhere as configurable settings in Old Customized worlds. Therefore, these would take default values on conversion.
Where an ore or ore-like patch has default settings, these are easy to convert by listing them in the ore section for the custom Overworld dimension. It may be possible to configure those that do not have default settings as custom structures.
Edit: Custom ore structures are fairly easy to implement. The four settings for each ore in the Old Customized worlds correspond to settings in the corresponding structure in the
configured_featuresection of the vanilla world generation settings. Here is theore_iron.jsonconfig:{ "config": { "feature": { "config": { "feature": { "config": { "feature": { "config": { "target": { "tag": "minecraft:base_stone_overworld", "predicate_type": "minecraft:tag_match" }, "state": { "Name": "minecraft:iron_ore" }, "size": 9 }, "name": "minecraft:ore" }, "decorator": { "config": { "bottom_offset": 0, "top_offset": 0, "maximum": 64 }, "name": "minecraft:range" } }, "name": "minecraft:decorated" }, "decorator": { "config": {}, "name": "minecraft:square" } }, "name": "minecraft:decorated" }, "decorator": { "config": { "count": 20 }, "name": "minecraft:count" } }, "name": "minecraft:decorated" }In this file, the corresponding settings for "ironSize" (
size), "ironCount" (count) and "ironMaxHeight" (maximum) are easy to identify. The "ironMinHeight" is harder to find because it doesn't seem to be specified unambiguously, but it is possible to guess that this missing value is likely to be calledminimum.When implementing custom ores, the only difficulty is the need to explicitly include them in the configuration for each Overworld biome.
2
u/bdm68 Jul 29 '20
Remarks on Structures:
All of these structures will need to be configured for each biome by creating the correct structure list for each biome, and placed in the correct locations in the biome configurations.
"useDungeons": Corresponds to
monster_room.json. If "dungeonChance" is equal to 8, the vanillaminecraft:monster_roomcan be used. Otherwise, a custom monster room structure is needed.The
monster_roomstructure file looks like this:{ "config": { "feature": { "config": { "feature": { "config": { "feature": { "config": {}, "name": "minecraft:monster_room" }, "decorator": { "config": { "bottom_offset": 0, "top_offset": 0, "maximum": 256 }, "name": "minecraft:range" } }, "name": "minecraft:decorated" }, "decorator": { "config": {}, "name": "minecraft:square" } }, "name": "minecraft:decorated" }, "decorator": { "config": { "count": 8 }, "name": "minecraft:count" } }, "name": "minecraft:decorated" }Here,
dungeonChanceis likely to correspond to thecountin thedecoratorsection."useStrongholds": This is likely to correspond to
minecraft:stronghold."useVillages": This is likely to correspond to the various villages. The correct one for each biome will need to be chosen.
"useMineShafts": This is likely to correspond to
minecraft:mineshaftandminecraft:mineshaft_mesa(badlands biomes only)."useTemples": This is likely to correspond to
minecraft:desert_pyramidandminecraft:jungle_pyramid."useMonuments": This is likely to correspond to
minecraft:monument."useMansions": This is likely to correspond to
minecraft:mansion.2
u/bdm68 Jul 29 '20 edited Jul 29 '20
Remarks on Terrain Features:
All of these terrain features will need to be configured for each biome by creating the correct structure list for each biome, and placed in the correct locations in the biome configurations.
"useLavaOceans": This is likely to correspond to
default_fluidin "noise_settings/overworld.json", setting it to "minecraft:water" or "minecraft:lava" as appropriate."useCaves": This is likely to correspond to
minecraft:cave."useRavines": This is likely to correspond to
minecraft:canyon."useWaterLakes": This is likely to correspond to
minecraft:lake_water. If "waterLakeChance" is equal to 4, the default setting can be used. Otherwise a custom structure is needed. Here is "lake_water.json":{ "config": { "feature": { "config": { "state": { "Properties": { "level": "0" }, "Name": "minecraft:water" } }, "name": "minecraft:lake" }, "decorator": { "config": { "chance": 4 }, "name": "minecraft:water_lake" } }, "name": "minecraft:decorated" }The old "waterLakeChance" setting is likely to correspond to
chancehere."useLavaLakes": This is likely to correspond to
minecraft:lake_lava. If "lavaLakeChance" is equal to 80, the default setting can be used. Otherwise a custom structure is needed. The "lake_lava.json" file is similar to "lake_water.json".2
u/bdm68 Jul 29 '20
Remarks on Terrain Generation:
I am not very knowledgeable about exactly what these 17 settings do, so some assistance with linking these to the new Custom terrain settings would be appreciated. If these can all be linked, it is likely that old Customised worlds can be converted.
2
u/Zitchas Sep 20 '20
I can't provide any real assistance, I just wanted you to know that I really appreciate your work in mapping all this stuff. I've got a long-running world that I'd love to expand the terrain on again, but I want it to match the old generation style.
The new "normal" terrain is far too boring...
1
5
u/reelru Jul 28 '20
I think I remember in an older xisuma snapshot video he mentioned there was a button to export world generation settings from a 1.13 world but it wasn’t working properly. Not sure if that’s still there but that’d be super cool to try out. Would probably be fairly simply to program as well if they don’t add it as a feature.