Key Interactions¶
Most keys are independent. The ones on this page are not: setting one correctly still produces nothing, because a second key elsewhere overrides it, gates it, or is applied after it.
Every entry names the version it was checked against and how. These are the cases behind most reports of a setting that "does nothing".
One key silently defeats another¶
torch needs generateLighting¶
| code review | |
|---|---|
| Set | A palette entry with torch: true |
| Defeated by | lostcity.generateLighting, default false |
| Result | The character resolves to air. The block value is discarded and nothing is logged. |
| Checked | Run in a world, 7.4.12 |
The mod's own common palette marks T this way, which is why shipped buildings
are unlit under a default profile. See Palette. game test
explosionChance: 0 does not stop explosions¶
| code review | |
|---|---|
| Set | explosions.explosionChance: 0.0 |
| Defeated by | explosions.miniExplosionChance, default 0.03 |
| Result | Buildings are still damaged. The mini roll is 15 times more likely than the one that was turned off. |
| Checked | Run in a world, 7.4.12 |
A profile that wants undamaged buildings has to zero both. code review
avoidWater does not stop buildings flooding¶
| code review | |
|---|---|
| Set | lostcity.avoidWater: true |
| Actually controlled by | lostcity.avoidFoliage |
| Result | avoidWater only removes liquid a part places. Whether "hard air" floods below sea level is read from avoidFoliage, whose name does not suggest it. |
| Checked | Read from the mod, 7.4.12 |
The per-part nowater meta does the same job for one part without
losing foliage. See Profile. code review
buildingchance: 1.0 does not fill every chunk on 7.5.0 or later¶
| code review | |
|---|---|
| Set | buildingchance: 1.0 on a city style |
| Defeated by | streetGenerationMode, default HIERARCHICAL_GRID_V1 from 7.5.0 |
| Result | The road planner claims chunks before buildingchance is rolled, so a claimed chunk never reaches the roll. |
| Checked | Read from the mod, 7.5.1 |
streetGenerationMode: LEGACY restores the 7.4.12 ordering. See
What changed in 7.5. code review
railwaysEnabled: false leaves every railway station standing¶
| game test | |
|---|---|
| Set | lostcity.railwaysEnabled: false |
| Defeated by | lostcity.railwayStationsEnabled, default true |
| Result | The switch is read only on chunks whose rail type is not a station, so the running rail goes and the stations remain. Measured: 13792 of 24320 railway blocks survived. |
| Checked | Run in a world, 7.4.12 |
Both have to be off to clear the network. railwaySurfaceStationsEnabled narrows
stations to underground ones rather than removing them. game test
buildingMaxCellars: 0 does not mean no cellars¶
| game test | |
|---|---|
| Set | lostcity.buildingMaxCellars: 0 |
| Defeated by | The chunk's own city level, which is added to the maximum |
| Result | The maximum is a base, not a cap. Measured: 2352 cellar blocks over sixteen chunks at a maximum of 0, and none once every chunk was pinned to level 0. |
| Checked | Run in a world, 7.4.12 |
City level comes from terrain height through cityLevel0Height and its seven
siblings, so a flat world is the only one where 0 means zero. game test
cityChance: 1.0 gives a world of streets, not buildings¶
| game test | |
|---|---|
| Set | cities.cityChance: 1.0, to make everything a city |
| Defeated by | lostcity.highwayDistanceMask, default 7 |
| Result | With the whole world a city, the highway network claims chunk after chunk, and a claimed chunk refuses a building unless its city level is at least two above the highway's. On flat ground that never happens, so every chunk comes back a street. |
| Checked | Run in a world, 7.4.12 |
Nothing is logged. Setting highwayDistanceMask: 0 alongside it restores the
buildings. This is separate from the 7.5 road planner above, and it applies on
every version. game test
A character defined in one style resolves in half the world¶
| game test | |
|---|---|
| Set | A palette layered into the Style a city style names in style |
| Not covered by it | Every chunk that is not a city chunk, which resolves against the world style's outsidestyle instead |
| Result | The character is defined where a building stands and undefined everywhere else. A city sphere's shell is drawn on non-city chunks, so a shell character defined only in the city style's style resolves to null and the server stops, uncaught, naming nothing. |
| Checked | Run in a world, 7.4.12 |
Layer the same palette into both styles. See Style. game test
preventruins is on the pinned building, not the Building asset¶
| code review | |
|---|---|
| Looking for | A key on a Building that protects it from ruins |
| Where it is | preventruins on a pinned building inside a predefined city |
| Result | A Building asset has no such key. Ruin protection is only reachable by pinning. |
| Checked | Run in a world, 7.4.12 |
Order of application matters¶
minfloors is applied after maxfloors¶
The floor count is clamped to the maximum, then raised to the minimum. The minimum
is a max(), so it wins. game test
| Declared | Result game test |
|---|---|
maxfloors: 3, minfloors: 6 |
6 floors. The minimum overrides the maximum it was just clamped to. |
maxfloors: 3 alone |
At most 3, subject to the profile and city style. |
overrideFloors changes which sources are consulted, not the order. Checked in a
world on 7.4.12. See Building. game test
A palette is merged in three layers¶
Style, then Building, then Part. Each layer overwrites the one before it for the same character, and a part palette merges into the building's rather than replacing it. game test
One exception inverts the rule: a concrete definition beats an alias whatever
the order, so a frompalette entry cannot override a character that any palette in
the set defines with a real block. game test
Checked in a world on 7.4.12. See Palette. game test
Chains where every link must hold¶
A chest is filled only if four things agree¶
| Gate | Default | Effect when it fails code review |
|---|---|---|
generateLoot |
true |
Every chest is empty. |
buildingWithoutLootChance |
0.2 |
One building in five gets neither loot nor spawners. |
chestWithoutLootChance |
0.2 |
One surviving chest in five is still empty. |
The loot value names a Condition |
Throws, and leaves invisible chests. |
At the defaults a chest in a randomly chosen building has roughly a 64% chance of being filled. Two empty chests in a row is not evidence of a broken palette. Checked in a world on 7.4.12. See Palette. code review
A profile reaches a datapack through four names¶
dimensionsWithProfiles names a profile, the profile names a worldStyle, the
world style names city styles, and a city style names buildings. code review
A wrong name at the first three is not equal in consequence: game test
| Wrong name in | Result game test |
|---|---|
dimensionsWithProfiles |
The dimension generates with a default profile. |
The profile's worldStyle |
The server crashes. It is resolved before the generation try/catch. |
| A city style or building reference | Failed chunks, logged per chunk. |
Checked in a world on 7.4.12. See Error Messages. game test
A sphere landscape needs a second profile¶
landscapeType: spheres or cavernspheres requires cityspheres.outsideProfile.
It is documented as optional with an empty default, and that default resolves to
null, so the first chunk that asks about the world outside a sphere throws. game test
On those landscape types nothing catches it, because LostCitySphereFeature has no
try. Checked in a world on 7.4.12. game test
Keys that override generation wholesale¶
A predefined city ignores the values that would otherwise choose¶
| Normally decided by | Inside a predefined city code review |
|---|---|
cityChance |
Ignored. The centre chunk is a city centre even at 0.0. |
| The city radius roll | Fixed to radius. |
| The world style's weighted city style pick | Fixed to citystyle. |
buildingchance, per chunk |
Ignored on any chunk holding a pinned building or street. |
Checked in a world on 7.4.12. See Predefined City. game test
Two keys that cannot work at all¶
inpart and belowpart never match from a Building's parts list, whatever else
is set, because the floor loop has no current part yet and passes the literal
<none>. belowpart additionally tests the current part rather than the one below
it in every version that declares the key. game test
Both work in a Condition reached from a palette's loot or mob, where the part is
real. Checked in a world on 7.4.12. See
Condition. game test
See also¶
- Known Issues for behaviour with no key at all
- Claim Tests for how each entry above was checked
- Profile Reference for the keys themselves