Skip to content

Versions

The mod has run on Minecraft 1.11.2 through Minecraft 26.1, across two mod loaders and three asset systems. A file that works on one of them can be meaningless on another. code review

This page states which version you have, what its asset system is, and which pages of this wiki apply. Every number comes from the jar itself; the method is in How these versions were checked. code review

The short answer

You are on code review Read
7.4.12, Minecraft 1.20.1 This wiki, as written. It is the documented version.
7.5.0 or later on Minecraft 1.20.1 This wiki, plus What changed in 7.5. Read that page first.
8.4.1 or later on Minecraft 1.21 or later This wiki, plus What changed in 7.5, plus The NeoForge line. Coming from 8.2.2, clear selectedProfile first or the server will not boot.
8.2.2 on Minecraft 1.21 This wiki. Ignore the 7.5 page. It is 7.4-era code on a 1.21 loader, so read Traps specific to one version too.
5.3.29 through 6.2.3 Most of this wiki. Some keys do not exist yet, and on four of these versions predefined cities never generate. See Traps specific to one version.
Anything before 5.3.29 None of the reference section. That era has its own: The File-Asset Era, read out of the 1.12.2 jar and run on its own rig. The file-asset era is the quick answer to which era you are in.

The boundary that matters

The mod changed how it loads city assets in 5.3.29, and that one change decides whether this wiki applies at all. code review

code review Before 5.3.29 5.3.29 and later
Where assets live assets/lostcities/citydata/*.json inside the jar data/<namespace>/lostcities/<type>/<name>.json in a datapack
How you add your own One combined file, config/lostcities/userassets.json One file per asset, in a datapack
Loader class AbstractAssetRegistry RegistryAssetRegistry
This wiki applies No Yes

Everything this wiki documents about buildings, parts, palettes, city styles and world styles describes the datapack system. On an earlier version those files are never read. code review

Version matrix

The Minecraft version below is the label the author put in the file name. The loader requirement is what the jar declares in its own metadata. code review

One jar often runs on more than one Minecraft release

A jar declares a loader range, not a Minecraft range. Which Minecraft versions a release supports lives on CurseForge rather than inside the file, and this table reports only what the file states. code review

Mod version code review Label Loader requirement Asset system Profile keys Datapack keys
1.0.2 1.1x Forge, Minecraft 1.11.2 File 72 0
1.0.1 1.12 Forge, Minecraft 1.12.2 File 71 0
1.0.2 1.12 Forge, Minecraft 1.12.2 File 72 0
2.0.22 1.12 Forge, Minecraft 1.12.2 File 128 0
2.0.28-alpha 1.14 Forge [28,), Minecraft [1.14] File 131 0
3.0.2-alpha 1.15 Forge [31,) File 131 0
4.0.5-alpha 1.16 Forge [31,) File 132 0
4.0.12-beta 1.16 Forge [31,) File 132 0
5.0.4 1.18 Forge [31,) File 132 0
5.3.29 1.18 Forge [40.1.50,) Datapack 111 196
6.0.3 1.19 Forge [31,) Datapack 111 180
6.1.6 1.19.3 Forge [43.1.30,) Datapack 107 196
6.2.2 1.19 Forge [43.1.30,) Datapack 110 229
6.2.3 1.19.4 Forge [43.1.30,) Datapack 107 196
7.4.12 1.20 Forge [47,) Datapack 131 253
7.5.1 1.20 Forge [47,) Datapack, hierarchical roads 160 268
8.2.2 1.21 NeoForge [21.0,) Datapack 114 230
8.4.1 1.21 NeoForge [21.0,) Datapack, hierarchical roads 160 268
9.5.1 1.21.11 NeoForge [21.11,) Datapack, hierarchical roads 160 268
10.0.1 26.1.2 NeoForge [26.1.2.0-beta,) Datapack, hierarchical roads 160 268

The bold row is the version this wiki documents.

A higher mod version does not always mean a newer feature set

8.2.2 has a higher mod version than 7.5.1 and does not have the hierarchical road system 7.5.1 has. The 1.20 line and the 1.21 line advanced in parallel, so compare the asset system column rather than the version number. code review

Traps specific to one version

Three behaviours vary by version in a way that produces no error message. Each is worth checking before assuming a pack is wrong.

Predefined cities and spheres do not work on four versions

The asset loads. It parses, it validates, a bad value in it stops the server from booting. It is then never consulted, so every pinned building and street is absent and nothing is logged. game test code review

Version Predefined cities and spheres game test code review
5.3.29, 6.0.3, 6.1.6, 6.2.3 Never placed. The registry is loaded from the datapack and then read from an empty cache
6.2.2, 7.4.12, 7.5.1, 7.5.2, 8.2.2, 8.4.1, 9.5.1, 10.0.1 Work

6.2.2, for Minecraft 1.19, has the loader. 6.2.3, for Minecraft 1.19.4, does not, so this does not improve monotonically with the version number. code review

On a version in the top row, place buildings through a city style selector instead. That path works: on 6.0.3 a fully namespaced building reached the world 6 times in a 6 by 6 chunk grid, 4496 blocks, with no failed chunks. game test

The predefined city folder is spelled three different ways

A folder that does not match the spelling the version compiled in is never scanned, and a pack that names it the other way looks empty. code review

Folder Versions code review
data/<ns>/lostcities/predefinedcitites/ 6.0.3
data/<ns>/lostcities/predefinedcites/ 5.3.29, 6.1.6, 6.2.2, 6.2.3, 8.2.2
data/<ns>/lostcities/predefinedcities/ 7.4.12, 7.5.1, 7.5.2, 8.4.1, 9.5.1, 10.0.1

Renaming that one folder, and changing nothing else, took the wiki's own namespace pack on 8.2.2 from generating nothing to generating 768 gold and 768 diamond. game test

predefinedspheres is spelled the same way in every version that has it, and 6.0.3 has no sphere registry at all. code review

6.0.3 has no catch around chunk generation

Every other datapack-era version wraps generation, logs Error generating chunk, and leaves that one chunk empty. 6.0.3 compiles the same method with no exception handler at all, so a single unresolvable reference becomes ReportedException: Feature placement and ends the server. game test code review

A part name written without a namespace is enough to do it. On 7.4.12 the same pack logs one line and leaves 41 chunks of open ground. game test

Upgrading 8.2.2 to 8.4.1 stops the server booting

8.2.2 writes selectedProfile = "<CHECK>" into config/lostcities-server.toml, and 8.4.1 no longer understands that value. It reads it as a profile name, finds no such profile, and throws while setting the world spawn. The world is never created. game test code review

NullPointerException: Cannot read field "GENERATE_NETHER"
  at mcjty.lostcities.setup.Config.getProfileForDimension

Set selectedProfile = "", or delete config/lostcities-server.toml and let 8.4.1 write a fresh one. A new install writes "" and never sees this. game test

8.2.2 behaves like 7.4.12, not like 7.5.1

8.2.2 carries a higher number than 7.5.2 and is 7.4-era code ported to Minecraft 1.21. Six signals agree, five read out of the jar and one run in a world. game test code review

Signal game test code review 7.4.12 7.5.1 8.2.2 8.4.1
A building whose refpalette does not resolve, with every part carrying its own Generates Absent Generates Absent
Failed chunks from that pack 2 8 2 8
overrideFloors on a building yes yes no yes
Predefined asset preloader yes yes no yes
Predefined city folder predefinedcities predefinedcities predefinedcites predefinedcities
Catch around chunk generation 1 6 1 6

The 7.5 changes reached the 1.21 line at 8.4.1, not at 8.2.2. Read What changed in 7.5 for 8.4.1 and later, and not for 8.2.2. Every column here was run rather than inferred. code review game test

Loader

Minecraft 1.21 and later require NeoForge. There is no Forge build. The change happens at mod version 8.0 and it does not go both ways: a NeoForge jar does not load on Forge, and a Forge jar does not load on NeoForge. code review

Mod versions Loader
1.0.1 through 7.5.1 Forge
8.2.2 and later NeoForge
code review

Key availability

The datapack asset format is not fixed across the datapack era. Key counts by version: code review

Version code review Datapack keys Against 7.4.12
5.3.29 196 57 fewer
6.0.3 180 73 fewer
6.1.6 196 57 fewer
6.2.2 229 24 fewer
6.2.3 196 57 fewer
7.4.12 253 documented baseline
7.5.1, 7.5.2 268 15 more
8.2.2 230 23 fewer
8.4.1, 9.5.1, 10.0.1 268 15 more

A key used on a version that predates it is ignored, not rejected. The file loads, nothing is logged, and the behaviour that key asked for never happens. That is quieter than a load failure and harder to spot. See Key availability. game test

One reference covers 7.5.1 through 10.0.1

The datapack format and the profile keys stopped changing after 7.5.1, compared by diffing the full key sets rather than reading release notes. code review

  • Profile keys. 7.5.1, 8.4.1, 9.5.1 and 10.0.1 declare the same 160 keys, with identical types, defaults, minimums and maximums. Zero differences.
  • Datapack keys. The same 268 keys, with the same required or optional status on each. The only change is a Java class rename in 9.5.1, from ResourceLocationMatcher to IdentifierMatcher. The JSON keys that class carries, if_any and excluding, are unchanged. code review

As far as the asset format goes, a datapack written for 7.5.1 on Minecraft 1.20.1 loads unchanged on 10.0.1 on Minecraft 26.1. Block names inside the palettes are a separate problem, because Minecraft renames blocks between releases. code review

The config file moved in 4.0.5

Versions code review Path
2.0.28 and 3.0.2 config/lostcities-common.toml
4.0.5 and later config/lostcities/common.toml

The older path still turns up in support threads and guides, and has been wrong since Minecraft 1.16. Every version this wiki covers uses config/lostcities/common.toml, which holds three keys. See Configuration. game test

How these versions were checked

Every jar was disassembled with javap and the numbers read from the mod's own constants rather than from documentation. code review

Number code review Source
Profile keys Each Configuration.get* registration call in LostCityProfile. Up to 2.0.22 that is Forge's own config class, writing lostcities.cfg. From 2.0.28 it is the mod's class, writing a .toml file.
Datapack keys Each fieldOf and optionalFieldOf call in the asset codecs.
Loader requirement META-INF/mods.toml or META-INF/neoforge.mods.toml.
Asset system Presence of RegistryAssetRegistry against AbstractAssetRegistry.

pack.mcmeta is not used. The mod left its pack_format at 6 from Minecraft 1.16 through Minecraft 1.19, so that number cannot date a jar. code review