The Lost Cities - DevTool

Build Lost Cities packs in game or from schematics, or open one you already have. Comments and .json5 in your files, mistakes caught at load time with a line number, and every step runs from a console. KubeJS compatible.
Back to Files

lostcities_devtool-1.20.1-3.3.0-7.5.jar

File namelostcities_devtool-1.20.1-3.3.0-7.5.jar
Uploader
RinkyNoobleRinkyNooble
Uploaded
Nov 15, 2026
Downloads
5
Size
517.4 KB
Mod Loaders
Forge
File ID
9635380
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:the-lost-cities-devtool-1654265:9635380")

Learn more about Curse Maven

What's new

3.3.0-7.5

For The Lost Cities 7.5.1 to 7.5.6, on Minecraft 1.20.1 and Forge 47+.

Everything since 3.1.2-7.5. A building can now come in from a file, a build can be looked at without flying round it, a touch-up comes back as the cells that changed, a pack can be asked what it generated, and all of it runs from a server console or a script with no game window open.

Your game Your Lost Cities Download
1.21.11, NeoForge 9.4.0 to 9.5.6 3.2.0-9.x
1.21 or 1.21.1, NeoForge 8.0.0 to 8.4.6 3.2.0-8.x
1.20.1, Forge 7.5.1 to 7.5.6 3.3.0-7.5
1.20.1, Forge 7.4.12 3.0.0

The commands below are in this file only. The NeoForge files are at 3.2.0 and do not have them yet.

Bring a building in from a file

/lcdev schem place <file> puts a building on the plot you are standing on. It reads a Sponge schematic (.schem, versions 1 to 3), a structure block's .nbt and a text building (.json), from config/lostcitiesdevtool/schematics/. Nothing else has to be installed.

Question Answer
Larger than the plot Refused, with the row that fits it
Smaller than the plot Centred. corner puts it on the plot's corner
What stood there Saved as a schematic under backups/plots/, then cleared. keep pastes over it
A block the game does not have Refused by name. missing places the rest
Stairs, panes, fences Keep the state the file gave them
Chests, spawners, command blocks Keep their data. A command block arrives unable to fire
The plot's settings floors and cellars are set to the height that was placed

schem info <file> reads a file without placing it, schem list names the files, and schem save <name> writes the plot out as a Sponge schematic.

A height that is not a whole number of levels is one more level, part filled: a building 21 high is four levels and generates with its roof. Measured: a tower of 123 blocks went in with its five stairs still shape=inner_left, and a townhouse of four levels generated with every one of its 256 roof slabs.

A text building is a palette of characters and layers of rows, the same file /lcdev look writes, so a plot can be written out, edited in a text editor and placed again.

See a build without flying round it

/lcdev look writes a plot, or any box of the world, into config/lostcitiesdevtool/views/:

File Shows
sheet.png The four sides and the top on one image
plans.png A floor plan of every level, looking down into it
blocks.json Every block as text, with its state and its data

A slab is drawn as half a square, a stair with its step, a pane edge on as a line. A line marks every chunk edge and every sixth layer, the two places Lost Cities cuts a building. A plan is taken from under a level's ceiling when it has one.

Word Does
cut=<0 to 5> The layer of each level a plan looks down from
scale=<n> Pixels to a block
A name The folder the files go in

A map colour is often nothing like a mod's texture. config/lostcitiesdevtool/colours.json, a block id to "#RRGGBB", gives a block the colour you say.

See exactly what somebody changed

A touch-up is a dozen cells of a building of thousands. /lcdev diff names them.

Command Compares
/lcdev diff The plot with how it stood when it was last imported or pasted
/lcdev diff <file> The plot with a file
/lcdev diff <file> <x> <y> <z> Any box of any dimension with a file

Each cell says what it was, what it is, which properties differ and what happened to its data. A door left open and a chest somebody looked in are marked as use, so they can be told from a change somebody built.

/lcdev export writes the same list as changes.json beside the pack, with when and from what each plot was filled. Measured: a pasted door, chest and command block, untouched, differ in 0 cells; after four edits, those four.

/lcdev note <words> leaves words on the block you are looking at. look, diff and an export hand them on with the place and the block standing there, so "a straight stair here, not a corner" travels with the build.

A plot has to be imported or pasted with this version before diff with no file, and changes.json, have anything to compare it with.

Ask a pack what it generated

/lcdev verify [radius], run in a dimension Lost Cities generates, reads a square of chunks and answers with:

It reports So you can tell
How many chunks chose each building Whether the weights do what was meant
Up to three copies of each, one of every height first Where to go and look, with the box to look at
Each multibuilding placed whole That it fits
The buildings no chunk chose Which ones no city style names
Each chunk that failed, with the reason What broke, without reading the log

centre=<x>,<z> moves the square, a building's name generates that one first, and samples=<n> gives up to eight copies. Measured on a test pack at radius 10: 408 city chunks, 327 with a building, and for a part with an undefined character 11 failures, each naming the character and the part. The command took 5 seconds at radius 8 and 8 at radius 32.

/lcdev findings [namespace] gives the load check's findings when asked, for one pack or all of them. /lcdev profile set <key> <value> puts a profile key in the pack, checked against the keys and types this Lost Cities has.

Run it from a console or a script

Command Does
/lcdev at <plot> <command> Runs a command standing on a named plot, in plot coordinates. No player needed
/lcdev json <command> Answers with one line of JSON: the result, the numbers, each refusal and what to change
/lcdev script <file> Runs a file of commands, one a line, and stops at the first that fails

lcdev.py, in the repository's agent folder, drives a server from a shell: start, stop, run a command, install an exported pack, restart and report what generated. One file, Python's standard library only. It refuses to start on a port another program holds and names the port, takes its ports by argument, and never sends a command to a server that is not the one it was pointed at.

So a pack can be built, exported, generated and checked by a script, on a machine with no game window.

Supported range

Unchanged: 7.5.1 through 7.5.6. The full check suite passes against 7.5.6.

Not checked

  • /lcdev note on the block a player is looking at. The checks leave notes by position, through the console.
  • A file written by schem save has not been opened in WorldEdit.
  • lcdev.py ran on Windows only.

This mod has no additional files