Profile Reference¶
Every key of this page, in one runnable file
docs/examples/every-key/profile/ekfull.json sets all 155 profile keys at their
documented defaults, in the section each one belongs to. It runs, and it builds
the same world as a profile that sets none of them. Useful when you want to see
where a key goes rather than what it does. game test
TL;DR
A profile is config/lostcities/profiles/<name>.json. Five sections: lostcity, cities, explosions, cityspheres, client, plus a root public flag. Every key below is optional, omit it and the default applies.
This page is the 131 keys of 7.4.12. Version 7.5 has 160.
Every key below was verified against the 7.4.12 class itself. On 7.5.0 or later, 29 keys are missing from this page and 3 of the keys that are here behave differently.
| If you are on | Read code review |
|---|---|
| 7.4.12 | This page, as written. |
| 7.5.x, 8.4.1, 9.5.1 or 10.0.1 | This page, plus What changed in 7.5. Those four versions share one identical set of 160 keys. |
| 8.2.2 | This page, minus 19 keys it does not have. See Key availability. |
Two changes here matter most. streetGenerationMode defaults to the new road
planner, which refuses a building on any planned road chunk before it rolls
buildingchance. And highwayLevelFromCities changed its default from 0 to
3. code review
The file name is the profile name¶
The mod reads every file in config/lostcities/profiles/ whose name ends in
.json, and takes the profile name from the file name. It does not read a name
from inside the file. code review
The name is everything before the first dot, because the mod splits the file
name on . and keeps the first piece. game test
| File name | Profile name | Notes game test |
|---|---|---|
mycity.json |
mycity |
|
mycity2.json |
mycity2 |
Digits are fine. |
MyCity.json |
MyCity |
Case is kept. Match it exactly in common.toml. |
my.city.json |
my |
Truncated at the first dot. |
mycity.JSON |
not read | The extension test is case sensitive. |
Two files whose names share everything before the first dot collide silently
city.a.json and city.b.json both become the profile city. The mod stores
profiles in a map keyed by that name, so the second file read replaces the
first. There is no warning, and which one survives depends on directory order.
Keep dots out of profile file names.
The name is used as a plain map key. It is not a resource location, so it is not
restricted to lowercase, and it does not need a namespace. What matters is that the
name in dimensionsWithProfiles matches the file name exactly, including case. code review
Loading a profile and being offered it are two different things
The rules above govern whether the mod reads the file. Whether it is offered on the world creation screen is a separate test, and it is not about the characters in the name.
The screen lists STANDARD_PROFILES filtered on isPublic(). A profile is
offered unless its own file sets "public": false, which is how the
outside-sphere profiles are hidden. Nothing anywhere inspects the characters of
a name. An earlier version of this page said a digit, an uppercase letter, a
hyphen or a dot kept a profile off the screen; that was observed once by hand,
is contradicted by the code, and is withdrawn. code review
The list is ordered default first, then by String.compareTo, which is code
point order: digits before uppercase, uppercase before lowercase. It sorts the
key rather than the label shown. code review
File shape¶
{
"public": true,
"lostcity": { "worldStyle": "standard" },
"cities": {},
"explosions": {},
"cityspheres": {},
"client": {}
}
public is root-level, not inside a category. Defaults to true. Set false to hide a profile from the in-game selector (used for the "private" outside-sphere profiles mentioned on the connects page). code review
Tables below: Range is the window the mod was designed and tested against, and the window the in-game screen enforces. A blank Range means it is not a number (text, block ID, list, or true/false). code review
Nothing validates a JSON profile
The ranges below are not enforced when a profile is loaded from config/lostcities/profiles/. "buildingMaxFloors": 9999 or "cityChance": -50 load without a warning and are used exactly as written, which shows up as broken generation rather than a clear error.
Only the in-game config screen clamps: the clamp function has three callers, all of them GUI slider widgets. The load path never calls it, and the real bounds are not even registered by then, since the raw JSON values are read in first. code review
Treat every range on this page as a rule you have to follow yourself.
There is also an in-game screen for this
The "Cities" button on the world-creation screen exposes about 40 of the more common keys from lostcity, explosions, and cityspheres below (chances, floor/cellar counts, explosion tuning, highway/rail toggles) without touching JSON. It is session-only: nothing is written to config/lostcities/profiles/ until the world is created. Anything not shown there, including every spawn* key, is JSON-only.
lostcity¶
Identity & terrain¶
| Key | Default | Range | Meaning code review |
|---|---|---|---|
description |
(text) | Shown for the profile in the selector. | |
extraDescription |
"" |
Extra info text. | |
warning |
"" |
Warning text shown on selection. | |
worldStyle |
"standard" |
The World Style this profile uses. See Namespaces. | |
icon |
"" |
64×64 icon path for the selector screen. | |
landscapeType |
"default" |
Which terrain generator the profile uses, and therefore what the world outside the cities looks like. See Landscape types for what each of the six values does. | |
liquidBlock |
minecraft:water |
Block used as the profile's liquid. Bad ID silently falls back to water. | |
baseBlock |
minecraft:stone |
Block used as the worldgen base. Bad ID silently falls back to stone. | |
groundLevel |
71 |
2 to 256 | The Y coordinate of city level 0. Every city level above it sits 6 blocks higher, so this is the anchor the whole vertical layout is measured from. |
seaLevel |
-1 |
-1 to 256 | Sea level Y. -1 uses the world default. |
bedrockLayer |
1 |
0 to 10 | Bedrock layer height. 0 = vanilla default bedrock. |
terrainFixLowerMinOffset |
-4 |
-40 to 40 | Lower-mesh offset (blocks) for raising adjacent terrain. |
terrainFixLowerMaxOffset |
-3 |
-40 to 40 | Upper end of that same offset range. |
terrainFixUpperMinOffset |
-1 |
-40 to 40 | Upper-mesh offset for lowering adjacent terrain. |
terrainFixUpperMaxOffset |
1 |
-40 to 40 | Upper end of that same offset range. |
avoidWater |
false |
If true, any block a part places that is the profile's liquid becomes air instead. Narrower than it sounds, see the note below. |
|
editMode |
false |
If true, the world records which part it placed where, enabling the editor commands. Must be set before the world is created. |
|
generateNether |
false |
If true, the Nether is generated with the cavern-style generator instead of vanilla. |
avoidWater is narrower than its name and its official description
The mod's own config comment says "all water will be avoided (replaced with air)". In 7.4.12 it has exactly one effect: while a part is being placed, a block that resolves to the profile's liquid becomes air instead.
| code review | |
|---|---|
| Palette characters mapping to water, inside your parts | Removed |
| Natural oceans, rivers, lakes, aquifers | Untouched |
| The water that fills "hard air" below sea level | Untouched by this flag, see below |
So it drains your buildings, not the world. If you want a dry world you need terrain settings, not this. code review
avoidFoliage also controls water, which its name does not suggest
"Hard air" is a special palette result that becomes water when it sits below the chunk's water level, which is what floods the lower storeys of a coastal building.
The check that decides this reads avoidFoliage, not avoidWater: code review
avoidFoliage: true→ hard air stays air, even below sea levelavoidFoliage: false→ hard air floods, regardless ofavoidWatercode review
That looks like a mix-up in the mod rather than a deliberate design, but it is what 7.4.12 does. If you are trying to stop buildings flooding, avoidFoliage: true is the flag that works, at the cost of trees and flowers in parks. The per-part nowater meta does the same thing for one part without that cost.
Landscape types¶
landscapeType accepts exactly six values. It decides what the world outside the cities is made of, and several other keys are only consulted on some of them. game test
| Value | What you get code review |
|---|---|
default |
Ordinary terrain, with cities sitting on it. This is the baseline every other type is a departure from. |
floating |
Islands floating in empty space, with cities on the islands. cityAvoidVoid matters here, because a city can otherwise hang off an island edge. |
space |
Everything inside glass bubbles in a void. The cityspheres section drives this. |
cavern |
Cities inside a large enclosed cave system rather than on an open surface. |
spheres |
Spheres on otherwise normal terrain, rather than in a void. |
cavernspheres |
Spheres inside a cavern. This is the hybrid: the mod treats it as both a cavern and a sphere type. |
cavernspheres satisfies two checks at once
The mod's internal tests are not one-per-value. isCavern() is true for both cavern and cavernspheres, and isSpheres() is true for both spheres and cavernspheres. So anything gated on either check applies to cavernspheres.
There is one test that separates them. isVoidSpheres() is true for spheres only, never for cavernspheres, which is what distinguishes spheres standing in open terrain from spheres enclosed in rock. code review
The terrain itself is not generated by this mod
Choosing anything other than default expects matching terrain to already exist. Lost Cities places cities, it does not generate floating islands or cavern systems. That is Lost Worlds, a separate mod by the same author. See How It All Connects.
Spawn¶
| Key | Default | Range | Meaning code review |
|---|---|---|---|
spawnBiome |
"" |
Force spawn in this biome. Empty = no restriction. | |
spawnCity |
"" |
Force spawn in this predefined city. | |
spawnSphere |
"" |
Force spawn in this predefined sphere. <in> = any sphere, <out> = outside every sphere. |
|
spawnNotInBuilding |
false |
If true, the spawn search rejects any position inside a building. |
|
forceSpawnInBuilding |
false |
If true, the spawn search only accepts positions inside a building. |
|
forceSpawnBuildings |
[] |
Restrict to these building names. Empty = any. | |
forceSpawnParts |
[] |
Restrict to these part names. Empty = any. | |
spawnCheckRadius |
200 |
1 to 100000 | Starting search radius (blocks). |
spawnRadiusIncrease |
100 |
1 to 100000 | Radius growth per failed search pass. |
spawnCheckAttempts |
20000 |
1 to 1000000 | Max chunks checked before spawn search fails. |
A bad combination of these keys is a hard error, not a fallback
Setting any of spawnBiome/spawnCity/spawnSphere/spawnNotInBuilding/forceSpawnInBuilding/forceSpawnBuildings/forceSpawnParts replaces vanilla's spawn search entirely, it does not layer on top of it. If the combination you set cannot actually be satisfied anywhere within spawnCheckAttempts chunks (a spawnCity/spawnSphere name that does not match any Predefined City/Sphere, or filters that contradict each other), world creation throws and fails outright instead of silently picking an imperfect spot. If a world with custom spawn settings will not generate, check these keys first.
Buildings, streets, parks¶
These get overridden by CityStyle
buildingChance, floor/cellar min/max, parkChance, avoidFoliage/parkBorder/parkElevation/parkStreetThreshold, fountainChance, buildingFrontChance, and corridorChance all have CityStyle-level equivalents. When a CityStyle sets its own value, it wins. These profile values are only the fallback.
| Key | Default | Range | Meaning code review |
|---|---|---|---|
buildingChance |
0.3 |
0 to 1 | Chance a city chunk is a building instead of a street. |
buildingMinFloors |
0 |
0 to 60 | The fewest floors above ground a building may be given. 0 means the ground floor only. |
buildingMaxFloors |
8 |
0 to 60 | The most floors above ground. This is the top floor index, so 8 allows nine storeys counting the ground floor. |
buildingMinFloorsChance |
4 |
1 to 60 | See formula below. |
buildingMaxFloorsChance |
6 |
1 to 60 | See formula below. |
buildingMinCellars |
0 |
0 to 20 | The fewest cellar levels. 0 means no cellar. |
buildingMaxCellars |
3 |
0 to 20 | The most cellar levels. The chunk's city level is added to this, so buildings on higher terrain may go deeper. |
buildingDoorwayChance |
0.6 |
0 to 1 | Chance of a doorway per eligible side/level. |
buildingFrontChance |
0.2 |
0 to 1 | Chance that a building is given a front part. The front is then drawn by each adjacent street chunk, not by the building itself. See City Style. |
parkChance |
0.2 |
0 to 1 | Chance a non-building section is a park. |
parkElevation |
true |
If true, parks get an extra layer of elevation. false leaves them flush with the street. |
|
parkBorder |
true |
If true, a park's border uses the street block as its base. |
|
parkStreetThreshold |
3 |
0 to 8 | Surrounding-street count needed for a park. |
fountainChance |
0.05 |
0 to 1 | Chance a street section has a fountain. |
corridorChance |
0.7 |
0 to 1 | Chance a chunk can be a corridor (also needs adjacent corridors). |
bridgeChance |
0.7 |
0 to 1 | The chance a chunk is eligible to carry a bridge. Terrain still has to suit one, so the visible rate is lower than this number. |
bridgeSupports |
true |
If true, bridges get support pillars where needed. Set false for bridges that span void. |
|
multiUseCorner |
false |
If true, a multi-building takes its level from its top-left corner only. false averages the surrounding level. |
|
useAvgHeightmap |
false |
If true, city level is averaged from surrounding heightmaps. More accurate, and slower, since it has to fetch neighbouring chunks. |
|
scatteredChanceMultiplier |
1.0 |
0 to 100 | Multiplier on scattered-building chance. 0 disables them. |
The floor-count formula
floors = buildingMinFloors + random(
buildingMinFloorsChance + (cityFactor + 0.1) *
(buildingMaxFloorsChance - buildingMinFloorsChance)
)
buildingMaxFloors. cityFactor is how "strong" this particular city is, roughly 0 to 1. code review
Decay & overgrowth¶
| Key | Default | Range | Meaning code review |
|---|---|---|---|
vineChance |
0.009 |
0 to 1 | Chance an exterior block gets a vine. |
randomLeafBlockChance |
0.1 |
0 to 1 | Chance of leaf blocks at building/street borders. |
randomLeafBlockThickness |
2 |
1 to 8 | How thick that leaf border looks. |
avoidFoliage |
false |
If true, parks generate with no trees or flowers. Also stops hard-air filling with water, see the note below. |
|
rubbleLayer |
true |
If true, the alternative dirt/stone/sand plus leaves layer generates, making cities look more overgrown. |
|
rubbleDirtScale |
3.0 |
0 to 100 | Noise scale for the dirt rubble layer. Smaller = broader coverage. 0 disables it. |
rubbleLeaveScale |
6.0 |
0 to 100 | Same, for the leaf rubble layer. |
ruinChance |
0.05 |
0 to 1 | The chance a building is ruined, meaning its upper levels are partly destroyed. See Damage, Ruins and Explosions. |
ruinMinlevelPercent |
0.8 |
0 to 1 | Fraction of building height where ruin destruction can start, low end. |
ruinMaxlevelPercent |
1.0 |
0 to 1 | Same, high end. |
Highways & railways¶
| Key | Default | Range | Meaning code review |
|---|---|---|---|
highwayRequiresTwoCities |
true |
If true, a highway needs a valid city at both ends. false lets one city be enough. |
|
highwayLevelFromCities |
0 |
0 to 3 | 0 top-left city's height, 1 min of both, 2 max of both, 3 average. |
highwayDistanceMask |
7 |
≥ 0 | Spacing bitmask, must be a power of two minus one (0, 1, 3, 7, 15...). 0 disables highways outright: the level lookup returns -1 before reading anything else, and no highway part is placed anywhere. game test |
highwayMainPerlinScale |
50.0 |
1 to 1000 | Noise scale, main axis. |
highwaySecondaryPerlinScale |
10.0 |
1 to 1000 | Noise scale, cross axis. |
highwayPerlinFactor |
2.0 |
-100 to 100 | Noise threshold. 0 ≈ 50% chance on an eligible chunk. Higher suppresses highways. Only chunks at a multiple of 8 are eligible at all, so this thins an already sparse grid rather than placing highways anywhere. |
highwaySupports |
true |
If true, highways get support pillars where needed. Set false for highways that span void. |
|
railwayDungeonChance |
0.01 |
0 to 1 | Chance a chunk next to a railway gets a dungeon. |
railwaysCanEnd |
false |
If true, a spot that would have been a station but has no city above gets a dead-end rail part instead. Useful when cities are rare. |
|
railwaysEnabled |
true |
If false, no rail lines generate. Stations still do, and they are more than half the network: turning this off alone left 13792 of 24320 railway blocks standing. railwayStationsEnabled has to go too. game test |
|
railwayStationsEnabled |
true |
If false, no railway stations generate. |
|
railwaySurfaceStationsEnabled |
true |
If false, only underground stations generate, never surface ones. |
Loot & misc¶
| Key | Default | Range | Meaning code review |
|---|---|---|---|
generateSpawners |
true |
If false, no spawners are placed even where a palette asks for them. |
|
generateLoot |
true |
If false, chests generate empty even where a palette sets a loot table. |
|
generateLighting |
false |
If true, torch palette entries are actually placed. If false, every torch entry becomes air, so buildings are unlit. |
|
chestWithoutLootChance |
0.2 |
0 to 1 | Chance an eligible chest is empty. |
buildingWithoutLootChance |
0.2 |
0 to 1 | Chance a building has neither loot nor spawners. |
cities¶
| Key | Default | Range | Meaning code review |
|---|---|---|---|
cityChance |
0.01 |
-1 to 1 | Chance a chunk is a city center. Exactly -1 switches to Perlin-noise mode. Raising it to 1.0 does not give you a world of buildings: the highway network then claims chunk after chunk, and a claimed chunk refuses a building whatever buildingchance says, so the whole grid comes back streets. Set highwayDistanceMask to 0 alongside it. game test |
cityMinRadius |
50 |
1 to 2000 | The smallest radius, in blocks, a city circle can roll. |
cityMaxRadius |
128 |
1 to 2000 | The largest radius, in blocks. Each city rolls a radius between the two. |
cityPerlinScale |
3.0 |
huge range, effectively unbounded | Noise scale for Perlin city placement. Larger values stretch the noise, so cities become broader and further apart. Ignored unless cityChance is exactly -1. |
cityPerlinInnerScale |
0.1 |
huge range, effectively unbounded | A second, finer noise scale layered on the first. Larger values smooth the city edges. Ignored unless cityChance is -1. |
cityPerlinOffset |
0.1 |
huge range, effectively unbounded | Shifts the noise threshold. Raising it makes cities rarer, lowering it makes them more common. Ignored unless cityChance is -1. |
cityThreshold |
0.2 |
0 to 1 | City-factor cutoff for overlapping city circles to count as a city. |
citySpawnDistance1 |
0 |
0 to 10000000 | Distance (blocks) from spawn for city-factor scaling, first point. |
citySpawnDistance2 |
0 |
0 to 10000000 | Second point. 0 disables spawn-distance scaling entirely. |
citySpawnMultiplier1 |
1.0 |
0 to 1 | City factor at the first distance. |
citySpawnMultiplier2 |
1.0 |
0 to 1 | City factor at the second distance. |
cityStyleThreshold |
-1.0 |
disabled at -1, else 0 to 1 | Below this city factor, use cityStyleAlternative instead. |
cityStyleAlternative |
"" |
The city style to use instead of the normal one wherever the city factor falls below cityStyleThreshold. Empty means no substitution. This is how a dense centre fades into sparse outskirts. |
|
cityAvoidVoid |
true |
floating landscape only. If true, a chunk detected as void gets no city, which stops cities hanging off island edges. |
|
cityLevel0Height … cityLevel7Height |
75, 83, 91, 99, 107, 115, 123, 131 |
1 to 384 each | Terrain-height cutoffs assigning a city to level 0 to 7. |
cityMinHeight |
50 |
-1024 to 2048 | No cities below this Y. |
cityMaxHeight |
150 |
-1024 to 2048 | No cities above this Y. |
oceanCorrectionBorder |
4 |
-255 to 255 | Terrain correction offset for ocean chunks next to a city. |
explosions¶
Normal and mini explosions are independent settings. code review
| Key | Default | Range | Meaning code review |
|---|---|---|---|
explosionChance |
0.002 |
0 to 1 | Per-chunk chance of a normal explosion. Setting this to 0 does not turn explosions off. miniExplosionChance is a separate roll, and its default is 15 times larger. |
explosionMinRadius |
15 |
1 to 1000 | The smallest blast radius, in blocks, that a normal explosion can roll. |
explosionMaxRadius |
35 |
1 to 3000 | The largest blast radius, in blocks. The mod rolls a radius between this and the minimum for each explosion. |
explosionMinHeight |
75 |
1 to 256 | The lowest Y the centre of a normal explosion can be placed at. The blast still reaches below it. |
explosionMaxHeight |
90 |
1 to 256 | The highest Y the centre can be placed at. |
miniExplosionChance |
0.03 |
0 to 1 | Per-chunk chance of a mini explosion. This is the one that actually fires: at 15 times explosionChance, most damage in a default world comes from here. A test profile that wants undamaged buildings has to zero both. |
miniExplosionMinRadius |
5 |
1 to 1000 | The smallest blast radius, in blocks, for a mini explosion. |
miniExplosionMaxRadius |
12 |
1 to 3000 | The largest blast radius for a mini explosion. |
miniExplosionMinHeight |
60 |
1 to 256 | The lowest Y a mini explosion centre can be placed at. |
miniExplosionMaxHeight |
100 |
1 to 256 | The highest Y a mini explosion centre can be placed at. |
explosionsInCitiesOnly |
true |
If true, an explosion's centre can only be in a city chunk. The blast radius reaches outside it either way. |
|
debrisToNearbyChunkFactor |
200 |
1 to 10000 | Debris spillover from nearby damaged chunks. Higher = less spillover. |
cityspheres¶
Mostly relevant to space, spheres, and cavernspheres landscape types. code review
| Key | Default | Range | Meaning code review |
|---|---|---|---|
citySphereFactor |
1.2 |
0.1 to 10 | Scales every city sphere's radius, on any sphere landscape. Not space only, whatever the config comment says. See the note below. code review |
citySphereChance |
0.7 |
0 to 1 | The chance a given city is enclosed in a sphere. Only consulted on the sphere landscape types, and only on a chunk that is already a city chunk: at the default cityChance of 0.01 no sphere appeared anywhere in a 225 chunk grid. 0.0 places none. game test |
citySphereClearAbove |
0 |
0 to 1024 | Blocks cleared above the sphere. 0 disables. |
citySphereClearBelow |
0 |
0 to 1024 | Blocks cleared below the sphere. 0 disables. |
citySphereClearAboveUntilAir |
false |
If true, clearing continues above whatever citySphereClearAbove removed, until it reaches air. |
|
citySphereClearBelowUntilAir |
false |
If true, the same downward, continuing past citySphereClearBelow until it reaches air. |
|
sphereSurfaceVariation |
1.0 |
0 to 1 | Terrain variation inside spheres. Smaller = more varied. |
outsideSurfaceVariation |
1.0 |
0 to 1 | The same terrain variation, applied outside the spheres instead of inside. Smaller values give more varied ground. |
monorailChance |
0.8 |
0 to 1 | Chance a sphere requests a monorail connection each direction (needs a matching neighbour). |
monorailOffset |
-2 |
-100 to 100 | Monorail height offset relative to the sphere. |
onlyPredefined |
false |
If true, only predefined spheres generate and none are placed randomly. |
|
outsideProfile |
"" |
Profile used for terrain outside the spheres. Effectively required on a sphere landscape: leave it empty and the first chunk that asks about the outside world throws getOutsideProfile() is null, uncaught. See connects page. |
|
outsideGroundLevel |
-1 |
-1 to 256 | Deprecated, use groundLevel on outsideProfile instead. |
grid32 |
false |
If true, city spheres align to a 32×32 chunk grid. false uses 16×16. |
citySphereFactor is not space only, and it does not scale the whole radius
The mod's config comment reads "Only used in 'space' landscape". getSphereRadius reads it on every path, with no landscape check anywhere in the method, so it applies on spheres and cavernspheres too. code review
It also multiplies less than the name suggests. For a sphere on a predefined city the whole radius is scaled, but for an ordinary one only the random part is: code review
| Sphere | Radius code review |
|---|---|
| On a predefined city | radius × citySphereFactor |
| Anywhere else | cityMinRadius + random(cityMaxRadius - cityMinRadius) × citySphereFactor |
So on an ordinary sphere the factor can never take the radius below cityMinRadius, and lowering it pulls every sphere towards that floor rather than shrinking it proportionally. code review
client¶
Only affects players who also have Lost Cities installed. -1 leaves the default alone. code review
| Key | Default | Range | Meaning code review |
|---|---|---|---|
horizon |
-1 |
-1 to 256 | Overrides the client-side horizon height, which is where the sky meets the fog. -1 leaves Minecraft's own value alone. |
fogRed |
-1 |
-1 to 1 | Red fog component, 0to1 when set explicitly. |
fogGreen |
-1 |
-1 to 1 | The green channel of the fog colour, 0 to 1. -1 leaves it alone. |
fogBlue |
-1 |
-1 to 1 | The blue channel of the fog colour, 0 to 1. -1 leaves it alone. |
fogDensity |
-1 |
-1 to 1 | How thick the fog is, 0 to 1, where higher is thicker. -1 leaves it alone. |
Where the file lives, and what rewrites it
config/lostcities/profiles/ is rewritten on every launch: the mod writes each
profile it ships back to disk before reading the folder. Deleting or editing a
shipped profile does not last, __readonly__ is inert, and profiles of your own
are untouched. See Configuration.
See also¶
- How It All Connects for how a profile gets picked at all
- Glossary