RoutesСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (25)
beta
Routes 2.0.0-beta.2 (NeoForge)
2.0.0-beta.2+neoforge17 окт. 2026 г.304Minecraft: 1.21.1neoforge
Что нового
A second beta of Routes 2.0: roads are planned in a fraction of the time, a reopened world remembers its towns and roads, and the land around a new spawn gets its roads. 🧪
> ⚠️ **This is a beta.** It has not had its full in-game test pass yet. Back up your world before you
> update, and tell us on Discord or GitHub if anything looks wrong.
### ⚠️ Changed
- **The settings that shape the road network are fixed for each world.** Changing one mid-world (the longest
road, roads per town, town and city sizes, ring roads, curviness, slope, road width, straight bridges, which
structures get connected, or the landmark settings) gave the land generated afterwards a second network whose
roads stopped short of the old ones. A world now keeps the values it was created with: `/routes config set`
saves the new value for the worlds you create next and says so, and `/routes config list` marks these
settings. A world you already have keeps the values it uses today.
- **New worlds pregenerate 512 chunks around spawn by default, down from 1024**: enough for the spawn town and
its first road out, in about two thirds of the time. Worlds you already have keep their value.
- **"Generate routes" off means no roads planned ahead and no spawn moved into a town.** The spawn stays where
the game puts it, and creating the world skips the town search.
### 🚀 Faster worlds
- **A reopened world remembers its towns and its roads.** The town survey and the plan of every road
already drawn are saved inside the world and read back as it opens, so reopening no longer pays for
them again. Both are thrown away and rebuilt on their own when a mod, a datapack or the world's road settings
change; deleting the files only costs time.
- **Roads are planned much sooner.** Landmarks along the way are looked up once and several at a time,
the towns at a road's ends are sized while the road is planned, and the ground under it is read on
several threads at once. On a test walk through new land, roads finished planning in about half the
time. The roads are exactly the same.
- **Finding the towns of a new area is faster.** A town is confirmed from its first building and laid out in
full only when a road depends on its size or its edge.
- **Routes looks for towns only where you are about to go**, not in a wide square around every player.
- **Shaping the ground under a road takes over a thousand times less work per road chunk**, and the ground
comes out the same, block for block.
- **Background road work no longer piles up or waits on itself.** Each survey or plan is queued once,
and a town search that another mod makes fail is not repeated by every chunk around it.
- **Work Routes used to repeat is now done once**: which structures count as towns and landmarks, where
two roads cross, whether each fork stands on solid footing, and whether a tree would stand on a
road, which no longer gets slower as the world grows.
- **The zone banner no longer gets slower with every area you discover.**
- **New road paint lands on your map without redoing the whole map**: about half a millisecond per update on a
map with 50,000 painted chunks, down from 12 ms with spikes past 30.
- **The server keeps its road map in a quarter of the memory**, and long sessions forget only the oldest ground
heights instead of measuring everything again.
- **Walking along a numbered route no longer re-queues all of its signs**: they are written once, when the
route gets its number.
### 🐛 Fixes
- **Roads, signs and terrain shaping reach the land around a new world's spawn.** The chunks Minecraft
generates before the world opens were made before Routes was ready, so a road crossing them stopped at their
edge and started again on the other side.
- **A dedicated server pregenerates a new world's spawn from the first join**, using its own config file,
instead of waiting for an operator to run `/routes config set`.
- **A road between far-apart towns no longer stops in the middle of nowhere** where a long chain of towns was
linked two different ways. Worlds you already have keep their roads.
- **Cancelling Create New World no longer leaves its ROUTES choices behind** for the next world or server you
open.
- **Your world's road map file saves the same way every time**, so backups stop seeing a new
`routes_gen2_map.dat` on every save.
### 🔧 For server owners
- **The road network is now tested automatically across twenty worlds**, including worlds whose towns sit far
apart.
- **Each planned road logs what its time went to**, and the headless benchmark times the town survey in
parts and runs a first join's spawn pregeneration with nobody joining.
- **A leftover manual Discord workflow is gone**, and with it one more copy of the bot's key.
beta
Routes 2.0.0-beta.2 (Fabric)
2.0.0-beta.2+fabric17 окт. 2026 г.229Minecraft: 1.21.1fabric
Что нового
A second beta of Routes 2.0: roads are planned in a fraction of the time, a reopened world remembers its towns and roads, and the land around a new spawn gets its roads. 🧪
> ⚠️ **This is a beta.** It has not had its full in-game test pass yet. Back up your world before you
> update, and tell us on Discord or GitHub if anything looks wrong.
### ⚠️ Changed
- **The settings that shape the road network are fixed for each world.** Changing one mid-world (the longest
road, roads per town, town and city sizes, ring roads, curviness, slope, road width, straight bridges, which
structures get connected, or the landmark settings) gave the land generated afterwards a second network whose
roads stopped short of the old ones. A world now keeps the values it was created with: `/routes config set`
saves the new value for the worlds you create next and says so, and `/routes config list` marks these
settings. A world you already have keeps the values it uses today.
- **New worlds pregenerate 512 chunks around spawn by default, down from 1024**: enough for the spawn town and
its first road out, in about two thirds of the time. Worlds you already have keep their value.
- **"Generate routes" off means no roads planned ahead and no spawn moved into a town.** The spawn stays where
the game puts it, and creating the world skips the town search.
### 🚀 Faster worlds
- **A reopened world remembers its towns and its roads.** The town survey and the plan of every road
already drawn are saved inside the world and read back as it opens, so reopening no longer pays for
them again. Both are thrown away and rebuilt on their own when a mod, a datapack or the world's road settings
change; deleting the files only costs time.
- **Roads are planned much sooner.** Landmarks along the way are looked up once and several at a time,
the towns at a road's ends are sized while the road is planned, and the ground under it is read on
several threads at once. On a test walk through new land, roads finished planning in about half the
time. The roads are exactly the same.
- **Finding the towns of a new area is faster.** A town is confirmed from its first building and laid out in
full only when a road depends on its size or its edge.
- **Routes looks for towns only where you are about to go**, not in a wide square around every player.
- **Shaping the ground under a road takes over a thousand times less work per road chunk**, and the ground
comes out the same, block for block.
- **Background road work no longer piles up or waits on itself.** Each survey or plan is queued once,
and a town search that another mod makes fail is not repeated by every chunk around it.
- **Work Routes used to repeat is now done once**: which structures count as towns and landmarks, where
two roads cross, whether each fork stands on solid footing, and whether a tree would stand on a
road, which no longer gets slower as the world grows.
- **The zone banner no longer gets slower with every area you discover.**
- **New road paint lands on your map without redoing the whole map**: about half a millisecond per update on a
map with 50,000 painted chunks, down from 12 ms with spikes past 30.
- **The server keeps its road map in a quarter of the memory**, and long sessions forget only the oldest ground
heights instead of measuring everything again.
- **Walking along a numbered route no longer re-queues all of its signs**: they are written once, when the
route gets its number.
### 🐛 Fixes
- **Roads, signs and terrain shaping reach the land around a new world's spawn.** The chunks Minecraft
generates before the world opens were made before Routes was ready, so a road crossing them stopped at their
edge and started again on the other side.
- **A dedicated server pregenerates a new world's spawn from the first join**, using its own config file,
instead of waiting for an operator to run `/routes config set`.
- **A road between far-apart towns no longer stops in the middle of nowhere** where a long chain of towns was
linked two different ways. Worlds you already have keep their roads.
- **Cancelling Create New World no longer leaves its ROUTES choices behind** for the next world or server you
open.
- **Your world's road map file saves the same way every time**, so backups stop seeing a new
`routes_gen2_map.dat` on every save.
### 🔧 For server owners
- **The road network is now tested automatically across twenty worlds**, including worlds whose towns sit far
apart.
- **Each planned road logs what its time went to**, and the headless benchmark times the town survey in
parts and runs a first join's spawn pregeneration with nobody joining.
- **A leftover manual Discord workflow is gone**, and with it one more copy of the bot's key.
beta
Routes 2.0.0-beta.1 (NeoForge)
2.0.0-beta.1+neoforge10 окт. 2026 г.172Minecraft: 1.21.1neoforge
Что нового
A beta of Routes 2.0: new worlds open much sooner, nothing stalls the server while land is being built, and the old road generator is retired. 🧪
> ⚠️ **This is a beta.** It has not had its full in-game test pass yet. Back up your world before you
> update, and tell us on Discord or GitHub if anything looks wrong.
### ⚠️ Breaking
- **The classic road generator is gone.** A world made with it is frozen: it loads and plays as before,
keeps every road, its map paint, zone banners and Nuzlocke zones, and never grows a new road. It is never
converted, never gets the new roads laid over its own, and no longer pre-generates its spawn. The
**Native route generation** switch is removed.
- **Eight commands that only worked on frozen worlds** (`scan`, `connect`, `addcity`, `delcity`, `weave`,
`repaint`, `reset`, `debug structures`) now answer with one line that names their replacement, if there is
one.
- **`/cobblemonroutes` is gone; `/routes` is the only command.** Update command blocks and macros.
- Add-ons built for an older Routes keep working: the safe-landing and ground-height lookups they use stay
as deprecated forwards until the next major.
### 🚀 Faster worlds
- **The land around your spawn is ready when you arrive.** Routes surveys the towns around your spawn on the
loading screen (*Routes: surveying the towns around your spawn*), once per world, so the chunks around you
load four to five times faster after you join.
- **With *spawn in city* on, your town is no longer built before the world opens.** In the automatic speed
test the wait went from 139–364 s to 60–103 s. You still wake up in the town.
- **Spawn pregeneration generates what it promises**, and its progress bar moves at the pace of the work;
the chunks of the road ahead are pre-loaded the same way. A new singleplayer world pregenerates its
spawn even if you never open the ROUTES tab.
- **Towns are found faster**: the village checks run side by side and find exactly the same towns.
- The *spawn in a city* step gives up after three starts instead of freezing the server on every one.
### 🐛 Fixes
- **No more stutters while a new world is being built.** Road signs, map markers and the zone
banner made the whole server wait for land still being generated. They now wait their turn in the
background, and signs that were left blank get their text as soon as their ground loads.
- **Joining a server with a huge road map no longer disconnects you.**
- **Creating a world after leaving another one no longer crashes** with *Failed to load registries*.
- **Another mod's world generator failing no longer stops your world from opening**: Routes skips the town
spawn and names the error in the log.
- **Two kinds of settlement can no longer swap towns** when they are looked up at the same moment.
- **Route markers and a route's first signs stand where the road leaves town**, on the real surface, and
stay there after you rejoin.
- **The loading-screen road waits for your spawn**, held just short of full with *Routes: placing your
spawn* and a running count of seconds.
- Tunnels are carved clear through ore and dripstone, tunnel lighting follows its setting, and
signposts keep their posts where two roads overlap.
- `/routes config set` refuses a value it does not know, and Mod Menu names every Routes setting, in
English and Spanish.
### ✨ New
- **Descriptive names are back**: *Route 3: Steep Pass* on signposts, waypoints and the zone banner,
and *A3-Frostpine* for enclosed areas. Each has a setting to turn it off, and applies to roads and
areas numbered from now on.
- **JourneyMap support**: the same chunk paint and waypoints you get on Xaero's maps.
- **Routes ships its own list of towns, landmarks and structures to ignore**, so a pack like the Cobblemon
Official Modpack gets roads to its gym entrances with no config, and a data pack can extend it.
- **`/routes rename`** renames a town, signs and welcome board included.
- **`/routes status`, `list`, `nearest`, `zone` and `tp` work on the new roads**, showing what you have
discovered.
### 🔧 For server owners
- New read-only diagnostics: `/routes debug workers`, `/routes debug bore`, `/routes debug
forks`, and a *no town in common* line in `/routes debug edges`.
- Failures that used to vanish while building roads are now logged and counted.
- Every change to Routes is now built for both loaders and tested automatically, and a
headless speed test, a road fingerprint and a road-quality audit catch a version
that moves or worsens your roads before it ships.
beta
Routes 2.0.0-beta.1 (Fabric)
2.0.0-beta.1+fabric10 окт. 2026 г.182Minecraft: 1.21.1fabric
Что нового
A beta of Routes 2.0: new worlds open much sooner, nothing stalls the server while land is being built, and the old road generator is retired. 🧪
> ⚠️ **This is a beta.** It has not had its full in-game test pass yet. Back up your world before you
> update, and tell us on Discord or GitHub if anything looks wrong.
### ⚠️ Breaking
- **The classic road generator is gone.** A world made with it is frozen: it loads and plays as before,
keeps every road, its map paint, zone banners and Nuzlocke zones, and never grows a new road. It is never
converted, never gets the new roads laid over its own, and no longer pre-generates its spawn. The
**Native route generation** switch is removed.
- **Eight commands that only worked on frozen worlds** (`scan`, `connect`, `addcity`, `delcity`, `weave`,
`repaint`, `reset`, `debug structures`) now answer with one line that names their replacement, if there is
one.
- **`/cobblemonroutes` is gone; `/routes` is the only command.** Update command blocks and macros.
- Add-ons built for an older Routes keep working: the safe-landing and ground-height lookups they use stay
as deprecated forwards until the next major.
### 🚀 Faster worlds
- **The land around your spawn is ready when you arrive.** Routes surveys the towns around your spawn on the
loading screen (*Routes: surveying the towns around your spawn*), once per world, so the chunks around you
load four to five times faster after you join.
- **With *spawn in city* on, your town is no longer built before the world opens.** In the automatic speed
test the wait went from 139–364 s to 60–103 s. You still wake up in the town.
- **Spawn pregeneration generates what it promises**, and its progress bar moves at the pace of the work;
the chunks of the road ahead are pre-loaded the same way. A new singleplayer world pregenerates its
spawn even if you never open the ROUTES tab.
- **Towns are found faster**: the village checks run side by side and find exactly the same towns.
- The *spawn in a city* step gives up after three starts instead of freezing the server on every one.
### 🐛 Fixes
- **No more stutters while a new world is being built.** Road signs, map markers and the zone
banner made the whole server wait for land still being generated. They now wait their turn in the
background, and signs that were left blank get their text as soon as their ground loads.
- **Joining a server with a huge road map no longer disconnects you.**
- **Creating a world after leaving another one no longer crashes** with *Failed to load registries*.
- **Another mod's world generator failing no longer stops your world from opening**: Routes skips the town
spawn and names the error in the log.
- **Two kinds of settlement can no longer swap towns** when they are looked up at the same moment.
- **Route markers and a route's first signs stand where the road leaves town**, on the real surface, and
stay there after you rejoin.
- **The loading-screen road waits for your spawn**, held just short of full with *Routes: placing your
spawn* and a running count of seconds.
- Tunnels are carved clear through ore and dripstone, tunnel lighting follows its setting, and
signposts keep their posts where two roads overlap.
- `/routes config set` refuses a value it does not know, and Mod Menu names every Routes setting, in
English and Spanish.
### ✨ New
- **Descriptive names are back**: *Route 3: Steep Pass* on signposts, waypoints and the zone banner,
and *A3-Frostpine* for enclosed areas. Each has a setting to turn it off, and applies to roads and
areas numbered from now on.
- **JourneyMap support**: the same chunk paint and waypoints you get on Xaero's maps.
- **Routes ships its own list of towns, landmarks and structures to ignore**, so a pack like the Cobblemon
Official Modpack gets roads to its gym entrances with no config, and a data pack can extend it.
- **`/routes rename`** renames a town, signs and welcome board included.
- **`/routes status`, `list`, `nearest`, `zone` and `tp` work on the new roads**, showing what you have
discovered.
### 🔧 For server owners
- New read-only diagnostics: `/routes debug workers`, `/routes debug bore`, `/routes debug
forks`, and a *no town in common* line in `/routes debug edges`.
- Failures that used to vanish while building roads are now logged and counted.
- Every change to Routes is now built for both loaders and tested automatically, and a
headless speed test, a road fingerprint and a road-quality audit catch a version
that moves or worsens your roads before it ships.
release
Routes 1.2.119 (NeoForge)
1.2.119+neoforge17 сент. 2026 г.492Minecraft: 1.21.1neoforge
Что нового
Landmarks, towns of every size, a map you set by command, and roads that look laid. 🗺️
### Towns, landmarks and the network
- **Settlements come in three sizes, village, town and city, and bigger ones carry more roads.** With
the default of four, a village gets one or two roads, a town two or three, a city three or four, and
no town is left unreachable. New options on the ROUTES tab: **Bigger towns, more roads**, **Town
size** and **City size**; `/routes debug settlements` shows how the towns around you fall into the
three. It changes which roads exist, so it applies to worlds created from this version on.
- **Every structure is a settlement, a landmark or ignored.** The create-world checklist is now **Towns
& landmarks**: every row reads Settlement, Landmark or Ignored, starts on the automatic answer, and
cycles with a click. `/routes structures` groups its file the same way. Unticking Villages now
really keeps them off the network, and the Fossils row, which connected nothing on Cobblemon
1.8, is gone.
- **Roads respect landmarks.** A road steers around a landmark instead of cutting through it, bends a
little to pass beside the one nearest its way, and a signpost on the landmark's side says what it is,
in English or Spanish; a structure from another mod is named from its id. New options: **Roads go
around landmarks**, **Landmark pull** (0 to 10, default 3), **Landmark reach** (default 96 blocks) and
**Landmark signs**. They apply to worlds created with this version and to ground not generated yet.
- **Roads wander a quarter less** at every Route curviness setting; the setting itself means what it
always meant.
- **For add-on authors:** rest stops, signposts and junction plazas respect an add-on's keep-out claim,
as roads already did. An add-on can ask where a water crossing's marker rocks stand and
whether a point on a road is a bridge deck.
### Managing the network
- **New command: `/routes remove`** (operator) takes away the town or the road you are standing on, and
names the road it withdrew. Where two roads cross your chunk it lists them and removes nothing.
**`/routes settlement reconnect`** puts a withdrawn road back.
- **`/routes settlement disconnect` works on generated roads**, so one road can go without deleting a
town. **`/routes settlement restore`** brings back a town you removed, with its name and roads,
and **`/routes delcity`** removes the town next to you, telling you which one and how far away
it was.
- As with every removal, ground that has already generated keeps its road; only new chunks change.
### On the road
- **The road surface comes in patches**, like laid paving, instead of changing at every block,
and the things along a road (marker rocks, channel floors, signposts, junctions) keep one kind over a
stretch instead of cycling at every step.
- **Tunnels are 9 wide and 8 tall by default**, with new **Tunnel width** and **Tunnel height** options.
A tunnel that crosses a cavern has walls, not just a roof, and its lanterns only hang
where there is rock to hang them from.
- **A bridge over water runs straight from bank to bank**, with a new **Straight bridges** option, on by
default. A short stream crossing keeps its deck instead of leaving a hole in the road.
- **Roads meet the water at the shore's own height.** The ramp that used to be dug into the bank is gone,
and a road steps onto a swimmable crossing at the water's level. Bridges keep their
ramps.
- **Water crossings can be followed at night**: each marker stone stands on a short pillar of the same
stone, with a sea lantern under it on a lit crossing. A signpost at a water crossing is always
a board on a post, never a sign hanging over the water.
- **Every real drop of two blocks or more gets a ladder**, measured on the road as it is built.
- **Rest stops fit the ground they stand on.** A campfire stop's cleared patch matches the place:
trodden podzol on grass, the ground itself on sand, gravel or snow. A picnic-table stop stands
on the grass itself, and its bread is in the table, with no basket beside it.
### The map
- **Xaero's world map is Xaero's own again.** The Routes panel drawn over it is gone, and with it
the on-demand Load chunks feature. The head start around spawn in a new world stays.
- **`/routesmap` opens a small screen with every map setting**: the chunk paint toggle, the waypoint
grouping, and an intensity and a colour for towns, roads and areas, applied as you change them. Its
subcommands do the same from chat, and `/routesmap list` prints a summary. It needs no operator
rights and works on any server. Turning the paint off and on is instant.
- **A key shows and hides the chunk paint.** Bind **Show / hide chunk paint** under **Routes** in
Controls; it ships unbound.
- **A road reads as one band about three chunks wide** on the map. Zone commands repaint the
minimap right away, not only the world map. With waypoints grouped per category, the
Settlements set is selected on your first join, so the markers show without hunting for them.
- **The map draws faster.** Working out a chunk's colour is about five times faster and allocates
nothing, and panning over wild country far from any road is up to twenty times faster.
### Fixes and housekeeping
- **Spawn is no longer moved onto a rock in the open sea** when every town nearby is underwater.
- **Routes refuses to install on a Minecraft version other than 1.21.1**, instead of crashing on
1.21.11.
- **The store page is rewritten**: no deleted buttons, no stale roadmap, and it says plainly that
Cobblemon is not required.
- The license inside the jar names all seven mods, and the development build only deploys to
test profiles that exist.
release
Routes 1.2.119 (Fabric)
1.2.119+fabric17 сент. 2026 г.1,1 тыс.Minecraft: 1.21.1fabric
Что нового
Landmarks, towns of every size, a map you set by command, and roads that look laid. 🗺️
### Towns, landmarks and the network
- **Settlements come in three sizes, village, town and city, and bigger ones carry more roads.** With
the default of four, a village gets one or two roads, a town two or three, a city three or four, and
no town is left unreachable. New options on the ROUTES tab: **Bigger towns, more roads**, **Town
size** and **City size**; `/routes debug settlements` shows how the towns around you fall into the
three. It changes which roads exist, so it applies to worlds created from this version on.
- **Every structure is a settlement, a landmark or ignored.** The create-world checklist is now **Towns
& landmarks**: every row reads Settlement, Landmark or Ignored, starts on the automatic answer, and
cycles with a click. `/routes structures` groups its file the same way. Unticking Villages now
really keeps them off the network, and the Fossils row, which connected nothing on Cobblemon
1.8, is gone.
- **Roads respect landmarks.** A road steers around a landmark instead of cutting through it, bends a
little to pass beside the one nearest its way, and a signpost on the landmark's side says what it is,
in English or Spanish; a structure from another mod is named from its id. New options: **Roads go
around landmarks**, **Landmark pull** (0 to 10, default 3), **Landmark reach** (default 96 blocks) and
**Landmark signs**. They apply to worlds created with this version and to ground not generated yet.
- **Roads wander a quarter less** at every Route curviness setting; the setting itself means what it
always meant.
- **For add-on authors:** rest stops, signposts and junction plazas respect an add-on's keep-out claim,
as roads already did. An add-on can ask where a water crossing's marker rocks stand and
whether a point on a road is a bridge deck.
### Managing the network
- **New command: `/routes remove`** (operator) takes away the town or the road you are standing on, and
names the road it withdrew. Where two roads cross your chunk it lists them and removes nothing.
**`/routes settlement reconnect`** puts a withdrawn road back.
- **`/routes settlement disconnect` works on generated roads**, so one road can go without deleting a
town. **`/routes settlement restore`** brings back a town you removed, with its name and roads,
and **`/routes delcity`** removes the town next to you, telling you which one and how far away
it was.
- As with every removal, ground that has already generated keeps its road; only new chunks change.
### On the road
- **The road surface comes in patches**, like laid paving, instead of changing at every block,
and the things along a road (marker rocks, channel floors, signposts, junctions) keep one kind over a
stretch instead of cycling at every step.
- **Tunnels are 9 wide and 8 tall by default**, with new **Tunnel width** and **Tunnel height** options.
A tunnel that crosses a cavern has walls, not just a roof, and its lanterns only hang
where there is rock to hang them from.
- **A bridge over water runs straight from bank to bank**, with a new **Straight bridges** option, on by
default. A short stream crossing keeps its deck instead of leaving a hole in the road.
- **Roads meet the water at the shore's own height.** The ramp that used to be dug into the bank is gone,
and a road steps onto a swimmable crossing at the water's level. Bridges keep their
ramps.
- **Water crossings can be followed at night**: each marker stone stands on a short pillar of the same
stone, with a sea lantern under it on a lit crossing. A signpost at a water crossing is always
a board on a post, never a sign hanging over the water.
- **Every real drop of two blocks or more gets a ladder**, measured on the road as it is built.
- **Rest stops fit the ground they stand on.** A campfire stop's cleared patch matches the place:
trodden podzol on grass, the ground itself on sand, gravel or snow. A picnic-table stop stands
on the grass itself, and its bread is in the table, with no basket beside it.
### The map
- **Xaero's world map is Xaero's own again.** The Routes panel drawn over it is gone, and with it
the on-demand Load chunks feature. The head start around spawn in a new world stays.
- **`/routesmap` opens a small screen with every map setting**: the chunk paint toggle, the waypoint
grouping, and an intensity and a colour for towns, roads and areas, applied as you change them. Its
subcommands do the same from chat, and `/routesmap list` prints a summary. It needs no operator
rights and works on any server. Turning the paint off and on is instant.
- **A key shows and hides the chunk paint.** Bind **Show / hide chunk paint** under **Routes** in
Controls; it ships unbound.
- **A road reads as one band about three chunks wide** on the map. Zone commands repaint the
minimap right away, not only the world map. With waypoints grouped per category, the
Settlements set is selected on your first join, so the markers show without hunting for them.
- **The map draws faster.** Working out a chunk's colour is about five times faster and allocates
nothing, and panning over wild country far from any road is up to twenty times faster.
### Fixes and housekeeping
- **Spawn is no longer moved onto a rock in the open sea** when every town nearby is underwater.
- **Routes refuses to install on a Minecraft version other than 1.21.1**, instead of crashing on
1.21.11.
- **The store page is rewritten**: no deleted buttons, no stale roadmap, and it says plainly that
Cobblemon is not required.
- The license inside the jar names all seven mods, and the development build only deploys to
test profiles that exist.
release
Routes 1.2.74 (NeoForge)
1.2.74+neoforge30 авг. 2026 г.415Minecraft: 1.21.1neoforge
Что нового
A map that builds the world, a settings screen you can read, roads that meet the water where the water is, signposts that only name real towns, and roads that keep up with a big load. 🗺️
- **The world map can now generate the ground around you, and tell you what that costs first.** Choose
how many chunks with a slider, press Load chunks, and a confirmation says how many will be generated
and roughly how long it takes before anything starts. The job runs in the background — the map fills
in as it goes, a counter tracks it, and the same button becomes Cancel until it finishes. On a
server, starting one is an operator's call; in your own world it is yours. (#67)
- **The Repaint map button is gone.** It re-drew the map by hand, and the one moment that is genuinely
needed — fresh ground having just appeared — now happens on its own the instant a chunk load
finishes. (#67)
- **The ROUTES tab at world creation is split into sections.** Every setting sat in one list under a
single heading, twenty-six deep, so finding the one you wanted meant reading all of them. They are
grouped now — Route Generation, Towns & Settlements, Road Shape, Surface & Lighting, World Spawn,
Map & Notifications — in the order you meet them, and the in-game settings screen follows the same
grouping. Nothing was renamed and nothing changed value: the worlds and the config file you already
have are untouched. (#69)
- **With Cobblemon Picnic installed, some rest stops are picnic tables.** About a third of the camps
along a road come up as one of its basic picnic tables instead, with a basket of bread standing
beside it — so a stop is somewhere you can actually sit down and picnic, not only somewhere to warm
your hands. The rest are the campfire camps they have always been. Without Cobblemon Picnic nothing
changes at all: every stop is a camp, and no imitation table is ever built out of ordinary blocks.
Stops on roads that have already generated stay as they are. (#143)
- **A road coming out of the water no longer climbs a mound to do it.** Where a swimmable crossing met
the shore, the ground either side of it was built up — sometimes a long way up — into a bank the road
then had to come back down. It was the crossing's own bed pulling the shoreline up to meet it. The
road follows the ground down to the waterline instead, and where the shore is already low it simply
stays low. Bridges are untouched: a bridge approach still climbs to its deck and still meets it in a
single step. (#169)
- **A road is numbered the moment it is built, not the moment you walk it.** Route numbers were handed
out on arrival, so a road you could see from a hilltop — or one you crossed halfway along, without
ever reaching either end — was nameless, and its fingerposts could only point at two towns. Roads are
numbered as the world draws them now, so every road that exists has a number and its signs read it
from the first one you meet. Numbers stay short and sequential; the order they run in is the order
the world built them. Worlds you already have keep every number they handed out. (#171)
- **A fingerpost no longer points at a town that does not exist.** Where a road forks, the sign has to
follow the road past the junction to find the settlement it really leads to — and where it could not
see that far, it named the junction instead. A junction is a piece of road with nothing on it, so
what went on the sign was an invented place. That line is simply left out now: a signpost gives you
the road you are standing on and whichever end of it can honestly be named. (#150)
- **A big chunk-loading job no longer leaves the roads inside it building from scratch.** While the
game was generating ground for you — the map's Load chunks button, or the ground laid down around a
new world's spawn — the mod stopped looking ahead at the roads in that ground **entirely**, so every
road chunk the job touched had to work its road out at the moment it was needed, which is the one
moment that makes you wait for it. It looks ahead throughout now. The job itself is unchanged and
costs the same; the road chunks inside it stop being the slow ones. (#150)
- **Waystones now work on NeoForge.** Activating a waystone names it after the town Routes knows for
that spot, registers it on the road network and moves the town's map marker onto the waystone
itself — all of which Fabric has always done and NeoForge silently did not, because the
integration was only ever wired up on one of the two loaders. Nothing changes for anyone without
Waystones installed. (#177)
- **An operator can author a zone over a whole region now, and manage it by name.** Deciding what a
patch of ground counts as — a town, a road, an area, or nothing at all — meant standing on every
chunk of it, one at a time. A zone can be drawn as a box between two corners, given a name, and
then grown, shrunk, renamed or removed as one thing. Ground that already belongs somewhere else
is still refused unless you say otherwise, and the refusal names what it would have taken:
moving a chunk from one zone to another changes which zone a catch already made in it belongs
to, so it is never done by accident. (#164)
- **The Laburo: draw a zone by clicking its two corners.** A red-bladed shovel for map makers, in
the Tools tab of the creative inventory. Right-click one corner, right-click the opposite one,
and the ground between them becomes a zone with a name you can rename afterwards; sneak and
right-click to choose what it becomes — a town, a road, or nothing at all. Right-click the air
if you change your mind about a corner. **It has no recipe**: it does nothing without operator
permission, so putting it on a crafting table would only teach a survival player that it is
broken. It never takes ground that already belongs somewhere else — it tells you what stood in
the way and leaves that decision to the command. (#164)
- **Close a ring of road and the land it encloses becomes an area, there and then.** An area is
never something you draw — it is the space left between the roads — so one only ever appeared
when somebody happened to walk into it. Now the moment an authoring edit closes a pocket, that
pocket is named and marked, and whoever drew it is told how many appeared. Areas that close
the ordinary way, as the world generates roads, are unchanged. (#164)
- **`/routes debug areas` agreed with nothing once you started authoring zones.** It was reading
the generator's own paint and ignoring the zones an operator had authored on top, so it
contradicted the map, the zone banner and the capture zones — precisely when you would run it
to find out why they disagreed. (#164)
- **A zone you author now gets a marker on the map.** It painted the ground and dropped no pin,
ever. A town's or a road's marker takes its name from the road network the world generated, and
a zone you drew by hand is not in it — so there was no name to give and nothing appeared. An
authored zone is announced under its own name instead, and comes back under it every time you
rejoin. (#164)
- **A ring drawn in country the generator has not touched yet closes an area properly.** The check
gave up early whenever no road had been generated anywhere, which is exactly the state a fresh
map-making world is in. (#164)
- **A world keeps the road-network rules it was made with.** Improvements to how the network is
planned — which towns connect, how a road is traced — cannot simply arrive in a world already
half-explored: the ground you have walked was built by the old rules and the ground ahead would
be built by the new ones, leaving roads that stop dead at the join. Every world now records
which generation of the rules it was born with and keeps it. Nothing generates differently yet
— this is the door the coming changes go through, and `/routes debug settlements` says which
generation your world is on. (#164)
- **A town no longer sends several roads off in almost the same direction.** Where six neighbours
sat in one quarter of the compass, six near-parallel roads left the town for them, and each one
costs the world real time to plan. A road that would set off within thirty degrees of one
already leaving is dropped, and the shorter of the two is the one that stays. **New worlds
only** — a world already under way keeps the network rules it was made with, so nothing you
have explored changes shape. (#175)
- **Roads are worked out in two passes instead of one, so exploring costs the machine less.** The
mod used to search the whole stretch of country between two towns at full detail to find one
road through it. It now sketches the route roughly first — cheaply, over the same ground at a
quarter of the detail — and then does the careful work only in the narrow band around that
sketch. If the sketch finds nothing, the old full search runs exactly as before, so a road that
exists today still exists. **New worlds only.** (#172)
- **Two villages close enough to touch are one town.** Where two settlements generated almost on top
of each other — which happens where a modded village lands on the same ground as a vanilla one —
the mod saw two towns and ran a road between them. That road began in a village and ended in the
same village: it had a number, a place on the map and signposts pointing along it, and walking it
took you nowhere. Settlements that close are read as one town with one name now, so the road
between them never exists, and that is one fewer road for the game to work out. **New worlds
only** — a world already under way keeps the network rules it was made with, so nothing you have
explored changes shape. (#170)
- **A step in the road is the same step from either side.** A one-block rise was dressed as a
staircase using the direction the road was travelling, so a climb and a descent were two different
sums — and for a long stretch only one of them was right, which is why the same slope came out a
proper staircase walked one way and a staircase sunk a block walked the other. A step is read off
the ground around it now: a block with one neighbour a block lower, and no drop on its other side,
carries the stair, and the stair faces uphill. The answer is the same whichever way you walk, and on
a road running diagonally the stairs land on the columns where the step actually is instead of
straight across the width. Roads already generated are unchanged. (#173, #106)
- **A tree no longer grows in the middle of the road.** A tree that landed on a road was built and
then torn out again — trunk, then crown, then whatever was left hanging — and every kind of growth
the clearing did not know about became its own report: a canopy floating over the road, bamboo
through the paving, a giant mushroom on the verge. Growth that would start on a road is simply not
planted now — trees, bamboo, giant mushrooms and ground cover ask the road first. The clearing stays
for everything else and for the roads you already have, so nothing already generated changes.
(#174, #113)
- **Wraith Waystones now works like Waystones does.** Discovering one of its waystones names it after
the town Routes knows for that spot and drops the town's marker on your map — the same single pin
that walking into the town would have given you, not a second one beside it. Fabric only, because
that is the only loader Wraith Waystones ships for; the original Waystones is unchanged and a pack
can run either, both or neither. (#81)
- **A road no longer has a step running along its own width.** Where a road ran diagonally, one half
of it could sit a block higher than the other for a stretch — a low kerb down the middle of the
carriageway, dressed in stairs that looked like they had been put there for no reason. The height of
the road is measured along its length now and is flat across it, so the whole width of the road is
one surface and a step only ever happens where the road is actually climbing. The stairs that were
covering those kerbs are gone with them. Roads already generated are unchanged. (#178)
release
Routes 1.2.74 (Fabric)
1.2.74+fabric30 авг. 2026 г.299Minecraft: 1.21.1fabric
Что нового
A map that builds the world, a settings screen you can read, roads that meet the water where the water is, signposts that only name real towns, and roads that keep up with a big load. 🗺️
- **The world map can now generate the ground around you, and tell you what that costs first.** Choose
how many chunks with a slider, press Load chunks, and a confirmation says how many will be generated
and roughly how long it takes before anything starts. The job runs in the background — the map fills
in as it goes, a counter tracks it, and the same button becomes Cancel until it finishes. On a
server, starting one is an operator's call; in your own world it is yours. (#67)
- **The Repaint map button is gone.** It re-drew the map by hand, and the one moment that is genuinely
needed — fresh ground having just appeared — now happens on its own the instant a chunk load
finishes. (#67)
- **The ROUTES tab at world creation is split into sections.** Every setting sat in one list under a
single heading, twenty-six deep, so finding the one you wanted meant reading all of them. They are
grouped now — Route Generation, Towns & Settlements, Road Shape, Surface & Lighting, World Spawn,
Map & Notifications — in the order you meet them, and the in-game settings screen follows the same
grouping. Nothing was renamed and nothing changed value: the worlds and the config file you already
have are untouched. (#69)
- **With Cobblemon Picnic installed, some rest stops are picnic tables.** About a third of the camps
along a road come up as one of its basic picnic tables instead, with a basket of bread standing
beside it — so a stop is somewhere you can actually sit down and picnic, not only somewhere to warm
your hands. The rest are the campfire camps they have always been. Without Cobblemon Picnic nothing
changes at all: every stop is a camp, and no imitation table is ever built out of ordinary blocks.
Stops on roads that have already generated stay as they are. (#143)
- **A road coming out of the water no longer climbs a mound to do it.** Where a swimmable crossing met
the shore, the ground either side of it was built up — sometimes a long way up — into a bank the road
then had to come back down. It was the crossing's own bed pulling the shoreline up to meet it. The
road follows the ground down to the waterline instead, and where the shore is already low it simply
stays low. Bridges are untouched: a bridge approach still climbs to its deck and still meets it in a
single step. (#169)
- **A road is numbered the moment it is built, not the moment you walk it.** Route numbers were handed
out on arrival, so a road you could see from a hilltop — or one you crossed halfway along, without
ever reaching either end — was nameless, and its fingerposts could only point at two towns. Roads are
numbered as the world draws them now, so every road that exists has a number and its signs read it
from the first one you meet. Numbers stay short and sequential; the order they run in is the order
the world built them. Worlds you already have keep every number they handed out. (#171)
- **A fingerpost no longer points at a town that does not exist.** Where a road forks, the sign has to
follow the road past the junction to find the settlement it really leads to — and where it could not
see that far, it named the junction instead. A junction is a piece of road with nothing on it, so
what went on the sign was an invented place. That line is simply left out now: a signpost gives you
the road you are standing on and whichever end of it can honestly be named. (#150)
- **A big chunk-loading job no longer leaves the roads inside it building from scratch.** While the
game was generating ground for you — the map's Load chunks button, or the ground laid down around a
new world's spawn — the mod stopped looking ahead at the roads in that ground **entirely**, so every
road chunk the job touched had to work its road out at the moment it was needed, which is the one
moment that makes you wait for it. It looks ahead throughout now. The job itself is unchanged and
costs the same; the road chunks inside it stop being the slow ones. (#150)
- **Waystones now work on NeoForge.** Activating a waystone names it after the town Routes knows for
that spot, registers it on the road network and moves the town's map marker onto the waystone
itself — all of which Fabric has always done and NeoForge silently did not, because the
integration was only ever wired up on one of the two loaders. Nothing changes for anyone without
Waystones installed. (#177)
- **An operator can author a zone over a whole region now, and manage it by name.** Deciding what a
patch of ground counts as — a town, a road, an area, or nothing at all — meant standing on every
chunk of it, one at a time. A zone can be drawn as a box between two corners, given a name, and
then grown, shrunk, renamed or removed as one thing. Ground that already belongs somewhere else
is still refused unless you say otherwise, and the refusal names what it would have taken:
moving a chunk from one zone to another changes which zone a catch already made in it belongs
to, so it is never done by accident. (#164)
- **The Laburo: draw a zone by clicking its two corners.** A red-bladed shovel for map makers, in
the Tools tab of the creative inventory. Right-click one corner, right-click the opposite one,
and the ground between them becomes a zone with a name you can rename afterwards; sneak and
right-click to choose what it becomes — a town, a road, or nothing at all. Right-click the air
if you change your mind about a corner. **It has no recipe**: it does nothing without operator
permission, so putting it on a crafting table would only teach a survival player that it is
broken. It never takes ground that already belongs somewhere else — it tells you what stood in
the way and leaves that decision to the command. (#164)
- **Close a ring of road and the land it encloses becomes an area, there and then.** An area is
never something you draw — it is the space left between the roads — so one only ever appeared
when somebody happened to walk into it. Now the moment an authoring edit closes a pocket, that
pocket is named and marked, and whoever drew it is told how many appeared. Areas that close
the ordinary way, as the world generates roads, are unchanged. (#164)
- **`/routes debug areas` agreed with nothing once you started authoring zones.** It was reading
the generator's own paint and ignoring the zones an operator had authored on top, so it
contradicted the map, the zone banner and the capture zones — precisely when you would run it
to find out why they disagreed. (#164)
- **A zone you author now gets a marker on the map.** It painted the ground and dropped no pin,
ever. A town's or a road's marker takes its name from the road network the world generated, and
a zone you drew by hand is not in it — so there was no name to give and nothing appeared. An
authored zone is announced under its own name instead, and comes back under it every time you
rejoin. (#164)
- **A ring drawn in country the generator has not touched yet closes an area properly.** The check
gave up early whenever no road had been generated anywhere, which is exactly the state a fresh
map-making world is in. (#164)
- **A world keeps the road-network rules it was made with.** Improvements to how the network is
planned — which towns connect, how a road is traced — cannot simply arrive in a world already
half-explored: the ground you have walked was built by the old rules and the ground ahead would
be built by the new ones, leaving roads that stop dead at the join. Every world now records
which generation of the rules it was born with and keeps it. Nothing generates differently yet
— this is the door the coming changes go through, and `/routes debug settlements` says which
generation your world is on. (#164)
- **A town no longer sends several roads off in almost the same direction.** Where six neighbours
sat in one quarter of the compass, six near-parallel roads left the town for them, and each one
costs the world real time to plan. A road that would set off within thirty degrees of one
already leaving is dropped, and the shorter of the two is the one that stays. **New worlds
only** — a world already under way keeps the network rules it was made with, so nothing you
have explored changes shape. (#175)
- **Roads are worked out in two passes instead of one, so exploring costs the machine less.** The
mod used to search the whole stretch of country between two towns at full detail to find one
road through it. It now sketches the route roughly first — cheaply, over the same ground at a
quarter of the detail — and then does the careful work only in the narrow band around that
sketch. If the sketch finds nothing, the old full search runs exactly as before, so a road that
exists today still exists. **New worlds only.** (#172)
- **Two villages close enough to touch are one town.** Where two settlements generated almost on top
of each other — which happens where a modded village lands on the same ground as a vanilla one —
the mod saw two towns and ran a road between them. That road began in a village and ended in the
same village: it had a number, a place on the map and signposts pointing along it, and walking it
took you nowhere. Settlements that close are read as one town with one name now, so the road
between them never exists, and that is one fewer road for the game to work out. **New worlds
only** — a world already under way keeps the network rules it was made with, so nothing you have
explored changes shape. (#170)
- **A step in the road is the same step from either side.** A one-block rise was dressed as a
staircase using the direction the road was travelling, so a climb and a descent were two different
sums — and for a long stretch only one of them was right, which is why the same slope came out a
proper staircase walked one way and a staircase sunk a block walked the other. A step is read off
the ground around it now: a block with one neighbour a block lower, and no drop on its other side,
carries the stair, and the stair faces uphill. The answer is the same whichever way you walk, and on
a road running diagonally the stairs land on the columns where the step actually is instead of
straight across the width. Roads already generated are unchanged. (#173, #106)
- **A tree no longer grows in the middle of the road.** A tree that landed on a road was built and
then torn out again — trunk, then crown, then whatever was left hanging — and every kind of growth
the clearing did not know about became its own report: a canopy floating over the road, bamboo
through the paving, a giant mushroom on the verge. Growth that would start on a road is simply not
planted now — trees, bamboo, giant mushrooms and ground cover ask the road first. The clearing stays
for everything else and for the roads you already have, so nothing already generated changes.
(#174, #113)
- **Wraith Waystones now works like Waystones does.** Discovering one of its waystones names it after
the town Routes knows for that spot and drops the town's marker on your map — the same single pin
that walking into the town would have given you, not a second one beside it. Fabric only, because
that is the only loader Wraith Waystones ships for; the original Waystones is unchanged and a pack
can run either, both or neither. (#81)
- **A road no longer has a step running along its own width.** Where a road ran diagonally, one half
of it could sit a block higher than the other for a stretch — a low kerb down the middle of the
carriageway, dressed in stairs that looked like they had been put there for no reason. The height of
the road is measured along its length now and is flat across it, so the whole width of the road is
one surface and a step only ever happens where the road is actually climbing. The stairs that were
covering those kerbs are gone with them. Roads already generated are unchanged. (#178)
release
Routes 1.2.45 (NeoForge)
1.2.45+neoforge22 авг. 2026 г.145Minecraft: 1.21.1neoforge
Что нового
Roads that arrive properly: staircases with a way out, shorelines that stay near the water, and towns
whose names come from every region. 🛣️
- **Staircases lead somewhere.** A road climbing into a bank used to lay its steps straight into the
hillside and stop — three stairs facing a wall of dirt. The doorway at the top is cut now.
- **Roads meet a town at the town's own level.** The last stretch into a settlement used to trace
whatever ground was under it and give up the moment it disagreed by more than two blocks, which left a
step at the gate — worst of all where the road arrived from a tunnel. It grades between the two ends
now, cutting and filling to arrive level with the street.
- **Coming out of the water is gentler.** A crossing used to rear up onto its bank at full tilt and read
as a mound; the climb is spread over twice the distance and hugs the waterline for longer.
- **Water crossings are marked on both sides.** A stone that fell in the next chunk over was quietly
dropped and nobody ever placed it, so diagonal crossings came out marked down one side only.
- **Every settlement decides how many roads it wants**, between one and four, instead of the whole world
sharing one number. Hamlets with a single way out, crossroads towns with four.
- **Town names from every region.** With Cobblemon installed the pool covers Kanto through Paldea
instead of three regions.
- **Signposts sit at the right height.** Hanging signs hang above head height instead of in your face;
boards read at eye level instead of over your head. Lamp posts are one block tall, not three.
- **Roadside camps have no lamp** — the campfire is the light — and the chest that sometimes stands
beside one is now genuinely rare, and no longer announces itself to Lootr.
- **Roads break the plants in their way**, including cocoa, apricorns and wildflowers, instead of
treating them as somebody's build and stopping. Farm crops are still left alone.
- **The load says what it is doing.** Surveying, graphing, planning or drawing, with counts and timings —
it was written for the loading screen years ago and read by nobody.
### Everything else since 1.1.6
Routes was rebuilt around Minecraft's own world generation in the meantime, and forty versions of
it went by without a release. The short of each, newest first — the full detail is in `CHANGELOG.md`
in the repository:
- **1.2.44** — Somebody left a chest at the campfire. 🧰
- **1.2.43** — Bridges are built out of the wood that grows where they stand, their steps meet the bank instead of starting a block above it, and stairs turn corners properly on a chunk seam. 🌉
- **1.2.42** — Nothing changes for a player. Under the hood, the settlement survey can now be asked its question from inside world generation, which is what lets an add-on generate a structure at a spot the road network decides — the Elite Four, in Cobblemon Nuzlocke & Soul Link. 🔧
- **1.2.41** — The town marker sits ON the waystone. 📍
- **1.2.40** — Junctions that stand somewhere, bridges you can climb onto, and trees taken whole. 🌉
- **1.2.39** — Groundwork for add-ons that change world rules in play. ⚙️
- **1.2.38** — Towns that are really there. 🏘️
- **1.2.37** — Towns say hello. 🪧
- **1.2.36** — Town markers sit on the waystone. 📍
- **1.2.35** — Stone railings. 🧱
- **1.2.34** — The "Cities include" checklist finally works both ways. 🏘️
- **1.2.33** — The End stops counting as a town, and the lights calm down. 🏘️
- **1.2.32** — Roads that get built at all, and a generator that stops asking the same question twice. ⚡
- **1.2.31** — Steps you can actually walk, ladders where a step will not do, and towns that announce themselves again. 🪜
- **1.2.30** — Junctions you can walk through, roads that climb, and towns you arrive at instead of through. 🛤️
- **1.2.29** — Signposts you can read from the road, and towns you can name. 🪧
- **1.2.27** — The world closes. 🪧
- **1.2.26** — `/routes settlement connect` completes the coordinates for you. 🏘️
- **1.2.25** — A road you can find on the map, and one that stops leaving things in the air. 🗺️
- **1.2.24** — Put a town where you want one. 🏘️
- **1.2.23** — Roads join a village where its streets already end. 🛤️
- **1.2.22** — The mod's markers arrive in one place, and it is the place you are looking at. 📍
- **1.2.21** — Both sides of a signpost point the same way. 🪧
- **1.2.20** — Counting the road network instead of guessing at it. 🔍
- **1.2.19** — Exploring stops costing what it did. 🗺️
- **1.2.18** — A crossing stays a crossing, and nothing balances on a step. 🌉
- **1.2.17** — Walking down a hill is the same staircase as walking up it. 🪜
- **1.2.16** — The bridge audit says what it found, not just what it missed. 🔎
- **1.2.15** — A road stops mistaking its own steps for someone else's wall. 🪨
- **1.2.14** — Roads you can see, staircases that turn, and a bridge that can be inspected. 🌉
- **1.2.13** — The survey stops being redone from scratch. 🗺️
- **1.2.8** — One signpost, built out of the forest it stands in. 🪧
- **1.2.7** — Generating a chunk stops waiting for a road. ⏱️
- **1.2.6** — Every road knows its own name. 🛣️
- **1.2.5** — Roads that meet the ground properly. 🌉
Closes #75, #77, #113, #132, #133, #134, #135, #136, #137, #138, #145, #146, #149.
release
Routes 1.2.45 (Fabric)
1.2.45+fabric22 авг. 2026 г.157Minecraft: 1.21.1fabric
Что нового
Roads that arrive properly: staircases with a way out, shorelines that stay near the water, and towns
whose names come from every region. 🛣️
- **Staircases lead somewhere.** A road climbing into a bank used to lay its steps straight into the
hillside and stop — three stairs facing a wall of dirt. The doorway at the top is cut now.
- **Roads meet a town at the town's own level.** The last stretch into a settlement used to trace
whatever ground was under it and give up the moment it disagreed by more than two blocks, which left a
step at the gate — worst of all where the road arrived from a tunnel. It grades between the two ends
now, cutting and filling to arrive level with the street.
- **Coming out of the water is gentler.** A crossing used to rear up onto its bank at full tilt and read
as a mound; the climb is spread over twice the distance and hugs the waterline for longer.
- **Water crossings are marked on both sides.** A stone that fell in the next chunk over was quietly
dropped and nobody ever placed it, so diagonal crossings came out marked down one side only.
- **Every settlement decides how many roads it wants**, between one and four, instead of the whole world
sharing one number. Hamlets with a single way out, crossroads towns with four.
- **Town names from every region.** With Cobblemon installed the pool covers Kanto through Paldea
instead of three regions.
- **Signposts sit at the right height.** Hanging signs hang above head height instead of in your face;
boards read at eye level instead of over your head. Lamp posts are one block tall, not three.
- **Roadside camps have no lamp** — the campfire is the light — and the chest that sometimes stands
beside one is now genuinely rare, and no longer announces itself to Lootr.
- **Roads break the plants in their way**, including cocoa, apricorns and wildflowers, instead of
treating them as somebody's build and stopping. Farm crops are still left alone.
- **The load says what it is doing.** Surveying, graphing, planning or drawing, with counts and timings —
it was written for the loading screen years ago and read by nobody.
### Everything else since 1.1.6
Routes was rebuilt around Minecraft's own world generation in the meantime, and forty versions of
it went by without a release. The short of each, newest first — the full detail is in `CHANGELOG.md`
in the repository:
- **1.2.44** — Somebody left a chest at the campfire. 🧰
- **1.2.43** — Bridges are built out of the wood that grows where they stand, their steps meet the bank instead of starting a block above it, and stairs turn corners properly on a chunk seam. 🌉
- **1.2.42** — Nothing changes for a player. Under the hood, the settlement survey can now be asked its question from inside world generation, which is what lets an add-on generate a structure at a spot the road network decides — the Elite Four, in Cobblemon Nuzlocke & Soul Link. 🔧
- **1.2.41** — The town marker sits ON the waystone. 📍
- **1.2.40** — Junctions that stand somewhere, bridges you can climb onto, and trees taken whole. 🌉
- **1.2.39** — Groundwork for add-ons that change world rules in play. ⚙️
- **1.2.38** — Towns that are really there. 🏘️
- **1.2.37** — Towns say hello. 🪧
- **1.2.36** — Town markers sit on the waystone. 📍
- **1.2.35** — Stone railings. 🧱
- **1.2.34** — The "Cities include" checklist finally works both ways. 🏘️
- **1.2.33** — The End stops counting as a town, and the lights calm down. 🏘️
- **1.2.32** — Roads that get built at all, and a generator that stops asking the same question twice. ⚡
- **1.2.31** — Steps you can actually walk, ladders where a step will not do, and towns that announce themselves again. 🪜
- **1.2.30** — Junctions you can walk through, roads that climb, and towns you arrive at instead of through. 🛤️
- **1.2.29** — Signposts you can read from the road, and towns you can name. 🪧
- **1.2.27** — The world closes. 🪧
- **1.2.26** — `/routes settlement connect` completes the coordinates for you. 🏘️
- **1.2.25** — A road you can find on the map, and one that stops leaving things in the air. 🗺️
- **1.2.24** — Put a town where you want one. 🏘️
- **1.2.23** — Roads join a village where its streets already end. 🛤️
- **1.2.22** — The mod's markers arrive in one place, and it is the place you are looking at. 📍
- **1.2.21** — Both sides of a signpost point the same way. 🪧
- **1.2.20** — Counting the road network instead of guessing at it. 🔍
- **1.2.19** — Exploring stops costing what it did. 🗺️
- **1.2.18** — A crossing stays a crossing, and nothing balances on a step. 🌉
- **1.2.17** — Walking down a hill is the same staircase as walking up it. 🪜
- **1.2.16** — The bridge audit says what it found, not just what it missed. 🔎
- **1.2.15** — A road stops mistaking its own steps for someone else's wall. 🪨
- **1.2.14** — Roads you can see, staircases that turn, and a bridge that can be inspected. 🌉
- **1.2.13** — The survey stops being redone from scratch. 🗺️
- **1.2.8** — One signpost, built out of the forest it stands in. 🪧
- **1.2.7** — Generating a chunk stops waiting for a road. ⏱️
- **1.2.6** — Every road knows its own name. 🛣️
- **1.2.5** — Roads that meet the ground properly. 🌉
Closes #75, #77, #113, #132, #133, #134, #135, #136, #137, #138, #145, #146, #149.
release
Routes 1.1.6 (NeoForge)
1.1.6+neoforge6 авг. 2026 г.191Minecraft: 1.21.1neoforge
Что нового
The road-building update — and Routes stops being a Cobblemon mod. 🛣️
### ⛰️ Roads stop diving underground at the first hill
- **A small rise no longer turns a road into a tunnel.** The decision was being made on the height of
whatever was standing on the ground instead of the ground itself, so a wooded hillock — sometimes a
single tall spruce on the route — read as a mountain. The road would bore a sealed pocket a few
blocks under the surface while the rest of it carried on over the top, and you would find a stretch
of road buried under your feet with no way in or out. Roads now measure the land, and a tunnel is
only dug through a hill that is genuinely in the way and long enough to be worth a passage. (#112)
- **Tunnel mouths are junctions you can walk through.** Where a bore ends, the road now comes down to
meet its floor — cutting an approach or raising an embankment over the last stretch — instead of
stopping against a wall of rock with the passage sitting below it. The passage keeps going until it
genuinely reaches daylight, and the road picks it up level, one step at most. (#112)
- **Roads are planned against the mountains that are actually there.** The height the planner worked
from was sampled before the noise that turns a smooth ridge into a jagged peak, so in high country —
windswept hills, groves, jagged peaks — the world stood many blocks above what the plan believed. A
road would be laid across a mountain the plan never saw, and then paved over its spikes one by one.
The profile a road is built on now reads the real, jagged terrain. (#112)
- **Roads are graded.** A road was laid on whatever the ground happened to do, so crossing broken
country it became a staircase of drops nobody could climb — an audit over one mountain range found
thirty-nine unwalkable steps on open road, one of them fifty-one blocks tall. Roads are now built to
their planned profile, cutting into a rise and embanking across a dip to hold the climb the "maximum
grade" setting allows. The full width of the road sits at one height too, so it never straddles an
edge with half of itself dropping away. (#112)
### 🌉 Water is crossed on top of it
- **Bridges are built above the water, not on the riverbed.** The height a road was planned at came
from the ground under the water, so a crossing dived to the river bottom and the bridge was decked
down there with the river flowing over it. A road now rises to meet its crossing and the deck rides
clear of the surface. (#117)
- **Deep water is crossed on the surface too.** Paved, lantern-lit corridors along the seabed are gone:
a stretch of water is either a bridge or an open lane you swim or sail, whatever its depth. (#117)
- **A bridge holds its height.** The step that keeps a road's climb gentle treats anything standing
proud of its surroundings as a bump to flatten — and a crossing standing clear of the water is
exactly that, so a bank a little lower than the waterline dragged whole spans back under. The
waterline is now a floor the smoothing cannot go beneath, and approaches rise to meet it like a
causeway. (#117)
- **A bridge that runs out into open water ends in a slipway.** Where a deck meets a stretch you swim,
its last span comes down flush with the surface, so you step off it into the water instead of finding
the planks stop in mid-air a block above it. (#117)
- **The road does not fill the sea.** A road decides what it is from its centre line but is wider than
that, so along a shore part of its width stood in open water and was built up to meet the rest —
raising banks of earth out of the sea. Water is crossed or swum, never filled in. (#117)
### 📐 Diagonal roads and tunnels stop duplicating their fittings
- **A road running diagonally is the same road as one running straight.** Everything was laid out
against the nearest compass direction rather than the way the road was actually going: diagonal roads
came out half again as wide, and because the compass direction flipped from one block to the next
along a diagonal, handrails, tunnel frames, bridge pillars and lamp posts were placed on all four
sides at once. They now follow the road's real direction. (#114)
- **Fittings come in the right quantity.** A tunnel frame is two posts and a beam, not a five-post wall;
a lantern row is a lantern on each side, not five. And they are spaced by distance travelled, so a
curving or diagonal road spaces them like a straight one instead of stretching every gap. (#114)
### 🛤️ Roads leave town like roads, not like a pair of tracks
- **Roads heading the same way are one road until they part.** A town connects to each of its
neighbours separately, and nothing in that ever considered *direction* — so two neighbours lying the
same way each got their own road, and the pair ran side by side for as long as they had a bearing in
common. Now they share a single road, and it forks exactly where the destinations pull apart: roads
bound for nearly the same place stay together almost the whole way and separate at the end, while
roads that diverge at once never merge at all. A fan of several destinations comes out as a tree of
forks rather than a bundle of parallel tracks, and every fork is signposted. (#111)
- **A road starts at the edge of town, not in the middle of it.** Roads stopped a fixed twenty blocks
from a settlement's centre point — but that point is where the game *starts* building a village, not
where the village ends, so the road was paving its way in among the houses. A road now stops at the
town's real edge and hands over to the street it meets there. (#112)
### 🪧 Signposts
- **Roadside fingerposts.** Every so often along a road there is now a post telling you which road you
are on and which way each of its towns lies — not only at the junctions and the town gates. (#111)
- **A fork out on the water gets a jetty to stand on.** Roads fork where their destinations part, and
that can fall in a lake or a bay; the signpost there had nothing to stand on, so the junction went
unmarked at exactly the spot you most need telling which way to go. It now gets a small railed deck
on piles, lit, and the sign stands on that. (#111)
### 🏘️ "Spawn in city" means a city
- **A new world's spawn lands in a settlement that is really there.** The spawn was placed from the
same quick read of the world seed the road network uses, which says where a village *may* generate —
the game still has to build it, and sometimes it does not, so players were being put down in an empty
field with roads leading to it. The spawn now checks with the game itself, for every kind of village
the mod builds roads to. It also lands you on dry, solid ground, so a town on a shore no longer drops
you in the water. If it cannot tell either way it still uses the nearest town rather than leaving you
in the wilderness, and **`/routes debug spawn`** places it on demand for a world that has already had
its one attempt.
### 🛣️ Roads wander a quarter less
- Roads bend a little less for the same **route curviness** setting, at every value of it. They still
follow the country rather than ruling a line across it; they just stop weaving for its own sake.
- Ops get **step reporting in `/routes debug gaps`**: every place a tunnel, a bridge or a road hands
over to the next at an unwalkable height is listed with its coordinates and the size of the step, so
a broken hand-off is a number instead of something you have to spot from the air. (#112)
### 🌍 New worlds start with a map worth looking at
- **Spawn pregeneration** — a new world now quietly generates a circle of chunks around spawn the
first time you enter it, so your first look at the map already shows towns and the roads between
them instead of an empty grid. It runs in the background and never delays getting into the world.
Set the size on the ROUTES tab at world creation, or set it to 0 if you would rather it did not.
Worlds that already exist get it once, on the next time you load them. (#130)
### 🪢 The Escape Rope moves to Cobblemon Nuzlocke & Soul Link
The rope goes with the rest of the Pokémon content. Its most important rule — you cannot rope your way
out of a battle — was the last thing this mod asked of Cobblemon, and **Routes now has no Escape Rope,
no items at all, and not one line that mentions Cobblemon.**
**Install [Cobblemon Nuzlocke & Soul Link](https://modrinth.com/mod/cobblemon-nuzlocke-soullink) 1.1.0
and nothing changes**: the rope crafts the same, works the same, and still takes you to the nearest
town of the road network. **Every rope you already own survives**, wherever it is sitting — in a
chest, a shulker, an item frame, or a world made before the mod was even renamed. Nothing to redo,
nothing to craft again. (#123, #127)
**If you don't install it**, you lose the rope and keep everything else — the roads, the towns, the
map, the waypoints.
### 🎛️ Change any setting without remaking the world
- **`/routes config`** — `list` shows every setting and what it currently is, `get` asks about one,
and `set` changes it (operators only), with `reset` putting it back to the mod's default. Every
option the create-world screen offers is there, with the same limits: the command refuses a value
the slider could not have produced.
- **A change sticks.** It applies immediately *and* is written into the world, so it is still there
after a restart — the whole point, since the settings you chose at world creation used to be the
only ones you would ever get.
- **A Config button on the mod list**, on both loaders — Mod Menu on Fabric, the mod list on NeoForge.
That screen edits the defaults new worlds start from; a world already in progress has its own
settings, which is what `/routes config` and the create-world tab are for.
### 💬 The commands answer in your language
- **`/routes` speaks Spanish now** — the network summary, the town and route listings, what is nearest
to you and what the chunk you stand on is painted as. Command output was the last corner of the mod
still hard-coded in English.
- **The generator's diagnostics moved out of the way.** The seven `gen2…` tools are now
`/routes debug bench`, `debug towns`, `debug graph`, `debug paint`, `debug areas`, `debug verify`
and `debug gaps`, alongside `debug structures`. They used to sit in the same list as the commands
you actually use, so typing `/routes ` offered `gen2gaps` before `list`. Their output stays in
English on purpose: it is read next to the server log.
### 📍 Map markers you can filter
- **Towns, routes and areas each get their own Xaero waypoint set** — **Settlements**, **Routes** and
**Areas** — so you can show or hide a whole category from Xaero's own waypoint screen, and the
mod's markers stop landing in among your personal ones. Markers you already have are matched by
position, so updating never leaves you with two of anything.
- **Activating a waystone no longer drops a second marker on its own town.** The waystone still
takes the town's name; the town is still discovered. It just stops arriving twice. (#93)
### ⚙️ The world-creation tab actually configures the world
This is the big one, and it is a fix rather than a feature.
- **What you pick on the ROUTES tab is what your world gets.** The tab saved your choices with the
world and the generator then went and read the config file instead, so most of that screen quietly
did nothing — the road surface, *Routes per city*, *Cities include*, spawn-in-city. Every option on
the tab is now the one your world actually runs on, each time you load it.
- **Your global settings stay yours.** A world's rules apply for as long as you are in that world and
your own defaults come back when you leave, so playing one world can never rewrite the settings the
next one starts from.
- **The road knobs are on the tab now** — road width, longest road, curviness and steepest climb.
They were hidden precisely because of the disconnection above; with it fixed, they belong in front
of you where the rest of the road settings are.
- **Cities include folds up.** The structure list is one line you expand, showing how many you have
ticked, instead of several hundred toggles burying every option underneath it. It still lists every
structure your world actually has, grouped by the mod each comes from. (#131)
### ✨ The chunk paint toggles instantly
- Turning **Chunk paint** off and back on used to make the world map re-render itself both times.
It now flips like the layer it always looked like. (#64)
- The tint and colour controls no longer write the config file to disk on every single step of a
slider drag, which is what made dragging them feel sticky.
### 🛣️ It runs on a plain Minecraft world now
Roads, towns, named routes and areas, waypoints and the painted map have nothing to do with Pokémon —
so from this version **Cobblemon is not required, and is not even declared as a dependency.** Install
Routes on a vanilla-ish pack and it works. Install it next to Cobblemon and nothing changes.
### ⚔️ Route trainers moved to Cobblemon Nuzlocke & Soul Link
The trainers that stand along the roads, challenge you on sight, and duel each other were the last
Pokémon feature living in here. They now ship in
**[Cobblemon Nuzlocke & Soul Link](https://modrinth.com/mod/cobblemon-nuzlocke-soullink) 1.1.0**,
together with their settings — trainer density, sight range, challenge delay, skirmishes and the
trainer entity id, which have left the ROUTES tab and the config file and turn up on the NUZLOCKE tab
instead.
**If you play with route trainers, install that mod (1.1.0 or newer) and carry on.** Your world
remembers exactly which stretches of road it has already populated, so nothing is placed twice and no
route suddenly doubles up on trainers.
**If you don't, you lose nothing you were using**, and the mod no longer asks you to install Cobblemon
to get roads.
**The gyms beside towns went with them**, for the same reason: the gym list is COBBLEVERSE's and the
markers are named after Gym Leaders. Towns still get a gym placed right next to them — it is
**[Cobblemon Nuzlocke & Soul Link](https://modrinth.com/mod/cobblemon-nuzlocke-soullink)** that places
it now, and the setting moved to the NUZLOCKE tab under the same name. Worlds in progress keep every
gym they already have, and no town is given a second one.
Two smaller things go with them: the "you can't Escape Rope out of a battle" check now asks Cobblemon
politely and simply doesn't apply when it isn't installed; and the battle-crash guard from 1.0.6 (#31)
moved into the Nuzlocke mod, which is where the battles it protects come from.
### Removed
- Every route-trainer setting: `route_trainers`, `route_trainer_entity`, `route_trainer_density`,
`trainer_los_range`, `route_trainer_challenge_delay_ticks`, `route_trainer_skirmishes`. They keep the
same names in the Nuzlocke mod, so worlds in progress keep their choices.
- The **Gyms beside towns** setting, and the gym structure list that came with it. Both live in the
Nuzlocke mod now, under the same names.
- The **Escape Rope**, and with it every item this mod had. It lives in Cobblemon Nuzlocke & Soul Link
now, and answers to all three of the ids it has ever had so no world loses the ropes it holds.
- Cobblemon as a dependency, on both loaders and on both stores.
Closes #128, closes #126, closes #64, closes #93, closes #123, closes #127, closes #130, closes #131.
release
Routes 1.1.6 (Fabric)
1.1.6+fabric6 авг. 2026 г.491Minecraft: 1.21.1fabric
Что нового
The road-building update — and Routes stops being a Cobblemon mod. 🛣️
### ⛰️ Roads stop diving underground at the first hill
- **A small rise no longer turns a road into a tunnel.** The decision was being made on the height of
whatever was standing on the ground instead of the ground itself, so a wooded hillock — sometimes a
single tall spruce on the route — read as a mountain. The road would bore a sealed pocket a few
blocks under the surface while the rest of it carried on over the top, and you would find a stretch
of road buried under your feet with no way in or out. Roads now measure the land, and a tunnel is
only dug through a hill that is genuinely in the way and long enough to be worth a passage. (#112)
- **Tunnel mouths are junctions you can walk through.** Where a bore ends, the road now comes down to
meet its floor — cutting an approach or raising an embankment over the last stretch — instead of
stopping against a wall of rock with the passage sitting below it. The passage keeps going until it
genuinely reaches daylight, and the road picks it up level, one step at most. (#112)
- **Roads are planned against the mountains that are actually there.** The height the planner worked
from was sampled before the noise that turns a smooth ridge into a jagged peak, so in high country —
windswept hills, groves, jagged peaks — the world stood many blocks above what the plan believed. A
road would be laid across a mountain the plan never saw, and then paved over its spikes one by one.
The profile a road is built on now reads the real, jagged terrain. (#112)
- **Roads are graded.** A road was laid on whatever the ground happened to do, so crossing broken
country it became a staircase of drops nobody could climb — an audit over one mountain range found
thirty-nine unwalkable steps on open road, one of them fifty-one blocks tall. Roads are now built to
their planned profile, cutting into a rise and embanking across a dip to hold the climb the "maximum
grade" setting allows. The full width of the road sits at one height too, so it never straddles an
edge with half of itself dropping away. (#112)
### 🌉 Water is crossed on top of it
- **Bridges are built above the water, not on the riverbed.** The height a road was planned at came
from the ground under the water, so a crossing dived to the river bottom and the bridge was decked
down there with the river flowing over it. A road now rises to meet its crossing and the deck rides
clear of the surface. (#117)
- **Deep water is crossed on the surface too.** Paved, lantern-lit corridors along the seabed are gone:
a stretch of water is either a bridge or an open lane you swim or sail, whatever its depth. (#117)
- **A bridge holds its height.** The step that keeps a road's climb gentle treats anything standing
proud of its surroundings as a bump to flatten — and a crossing standing clear of the water is
exactly that, so a bank a little lower than the waterline dragged whole spans back under. The
waterline is now a floor the smoothing cannot go beneath, and approaches rise to meet it like a
causeway. (#117)
- **A bridge that runs out into open water ends in a slipway.** Where a deck meets a stretch you swim,
its last span comes down flush with the surface, so you step off it into the water instead of finding
the planks stop in mid-air a block above it. (#117)
- **The road does not fill the sea.** A road decides what it is from its centre line but is wider than
that, so along a shore part of its width stood in open water and was built up to meet the rest —
raising banks of earth out of the sea. Water is crossed or swum, never filled in. (#117)
### 📐 Diagonal roads and tunnels stop duplicating their fittings
- **A road running diagonally is the same road as one running straight.** Everything was laid out
against the nearest compass direction rather than the way the road was actually going: diagonal roads
came out half again as wide, and because the compass direction flipped from one block to the next
along a diagonal, handrails, tunnel frames, bridge pillars and lamp posts were placed on all four
sides at once. They now follow the road's real direction. (#114)
- **Fittings come in the right quantity.** A tunnel frame is two posts and a beam, not a five-post wall;
a lantern row is a lantern on each side, not five. And they are spaced by distance travelled, so a
curving or diagonal road spaces them like a straight one instead of stretching every gap. (#114)
### 🛤️ Roads leave town like roads, not like a pair of tracks
- **Roads heading the same way are one road until they part.** A town connects to each of its
neighbours separately, and nothing in that ever considered *direction* — so two neighbours lying the
same way each got their own road, and the pair ran side by side for as long as they had a bearing in
common. Now they share a single road, and it forks exactly where the destinations pull apart: roads
bound for nearly the same place stay together almost the whole way and separate at the end, while
roads that diverge at once never merge at all. A fan of several destinations comes out as a tree of
forks rather than a bundle of parallel tracks, and every fork is signposted. (#111)
- **A road starts at the edge of town, not in the middle of it.** Roads stopped a fixed twenty blocks
from a settlement's centre point — but that point is where the game *starts* building a village, not
where the village ends, so the road was paving its way in among the houses. A road now stops at the
town's real edge and hands over to the street it meets there. (#112)
### 🪧 Signposts
- **Roadside fingerposts.** Every so often along a road there is now a post telling you which road you
are on and which way each of its towns lies — not only at the junctions and the town gates. (#111)
- **A fork out on the water gets a jetty to stand on.** Roads fork where their destinations part, and
that can fall in a lake or a bay; the signpost there had nothing to stand on, so the junction went
unmarked at exactly the spot you most need telling which way to go. It now gets a small railed deck
on piles, lit, and the sign stands on that. (#111)
### 🏘️ "Spawn in city" means a city
- **A new world's spawn lands in a settlement that is really there.** The spawn was placed from the
same quick read of the world seed the road network uses, which says where a village *may* generate —
the game still has to build it, and sometimes it does not, so players were being put down in an empty
field with roads leading to it. The spawn now checks with the game itself, for every kind of village
the mod builds roads to. It also lands you on dry, solid ground, so a town on a shore no longer drops
you in the water. If it cannot tell either way it still uses the nearest town rather than leaving you
in the wilderness, and **`/routes debug spawn`** places it on demand for a world that has already had
its one attempt.
### 🛣️ Roads wander a quarter less
- Roads bend a little less for the same **route curviness** setting, at every value of it. They still
follow the country rather than ruling a line across it; they just stop weaving for its own sake.
- Ops get **step reporting in `/routes debug gaps`**: every place a tunnel, a bridge or a road hands
over to the next at an unwalkable height is listed with its coordinates and the size of the step, so
a broken hand-off is a number instead of something you have to spot from the air. (#112)
### 🌍 New worlds start with a map worth looking at
- **Spawn pregeneration** — a new world now quietly generates a circle of chunks around spawn the
first time you enter it, so your first look at the map already shows towns and the roads between
them instead of an empty grid. It runs in the background and never delays getting into the world.
Set the size on the ROUTES tab at world creation, or set it to 0 if you would rather it did not.
Worlds that already exist get it once, on the next time you load them. (#130)
### 🪢 The Escape Rope moves to Cobblemon Nuzlocke & Soul Link
The rope goes with the rest of the Pokémon content. Its most important rule — you cannot rope your way
out of a battle — was the last thing this mod asked of Cobblemon, and **Routes now has no Escape Rope,
no items at all, and not one line that mentions Cobblemon.**
**Install [Cobblemon Nuzlocke & Soul Link](https://modrinth.com/mod/cobblemon-nuzlocke-soullink) 1.1.0
and nothing changes**: the rope crafts the same, works the same, and still takes you to the nearest
town of the road network. **Every rope you already own survives**, wherever it is sitting — in a
chest, a shulker, an item frame, or a world made before the mod was even renamed. Nothing to redo,
nothing to craft again. (#123, #127)
**If you don't install it**, you lose the rope and keep everything else — the roads, the towns, the
map, the waypoints.
### 🎛️ Change any setting without remaking the world
- **`/routes config`** — `list` shows every setting and what it currently is, `get` asks about one,
and `set` changes it (operators only), with `reset` putting it back to the mod's default. Every
option the create-world screen offers is there, with the same limits: the command refuses a value
the slider could not have produced.
- **A change sticks.** It applies immediately *and* is written into the world, so it is still there
after a restart — the whole point, since the settings you chose at world creation used to be the
only ones you would ever get.
- **A Config button on the mod list**, on both loaders — Mod Menu on Fabric, the mod list on NeoForge.
That screen edits the defaults new worlds start from; a world already in progress has its own
settings, which is what `/routes config` and the create-world tab are for.
### 💬 The commands answer in your language
- **`/routes` speaks Spanish now** — the network summary, the town and route listings, what is nearest
to you and what the chunk you stand on is painted as. Command output was the last corner of the mod
still hard-coded in English.
- **The generator's diagnostics moved out of the way.** The seven `gen2…` tools are now
`/routes debug bench`, `debug towns`, `debug graph`, `debug paint`, `debug areas`, `debug verify`
and `debug gaps`, alongside `debug structures`. They used to sit in the same list as the commands
you actually use, so typing `/routes ` offered `gen2gaps` before `list`. Their output stays in
English on purpose: it is read next to the server log.
### 📍 Map markers you can filter
- **Towns, routes and areas each get their own Xaero waypoint set** — **Settlements**, **Routes** and
**Areas** — so you can show or hide a whole category from Xaero's own waypoint screen, and the
mod's markers stop landing in among your personal ones. Markers you already have are matched by
position, so updating never leaves you with two of anything.
- **Activating a waystone no longer drops a second marker on its own town.** The waystone still
takes the town's name; the town is still discovered. It just stops arriving twice. (#93)
### ⚙️ The world-creation tab actually configures the world
This is the big one, and it is a fix rather than a feature.
- **What you pick on the ROUTES tab is what your world gets.** The tab saved your choices with the
world and the generator then went and read the config file instead, so most of that screen quietly
did nothing — the road surface, *Routes per city*, *Cities include*, spawn-in-city. Every option on
the tab is now the one your world actually runs on, each time you load it.
- **Your global settings stay yours.** A world's rules apply for as long as you are in that world and
your own defaults come back when you leave, so playing one world can never rewrite the settings the
next one starts from.
- **The road knobs are on the tab now** — road width, longest road, curviness and steepest climb.
They were hidden precisely because of the disconnection above; with it fixed, they belong in front
of you where the rest of the road settings are.
- **Cities include folds up.** The structure list is one line you expand, showing how many you have
ticked, instead of several hundred toggles burying every option underneath it. It still lists every
structure your world actually has, grouped by the mod each comes from. (#131)
### ✨ The chunk paint toggles instantly
- Turning **Chunk paint** off and back on used to make the world map re-render itself both times.
It now flips like the layer it always looked like. (#64)
- The tint and colour controls no longer write the config file to disk on every single step of a
slider drag, which is what made dragging them feel sticky.
### 🛣️ It runs on a plain Minecraft world now
Roads, towns, named routes and areas, waypoints and the painted map have nothing to do with Pokémon —
so from this version **Cobblemon is not required, and is not even declared as a dependency.** Install
Routes on a vanilla-ish pack and it works. Install it next to Cobblemon and nothing changes.
### ⚔️ Route trainers moved to Cobblemon Nuzlocke & Soul Link
The trainers that stand along the roads, challenge you on sight, and duel each other were the last
Pokémon feature living in here. They now ship in
**[Cobblemon Nuzlocke & Soul Link](https://modrinth.com/mod/cobblemon-nuzlocke-soullink) 1.1.0**,
together with their settings — trainer density, sight range, challenge delay, skirmishes and the
trainer entity id, which have left the ROUTES tab and the config file and turn up on the NUZLOCKE tab
instead.
**If you play with route trainers, install that mod (1.1.0 or newer) and carry on.** Your world
remembers exactly which stretches of road it has already populated, so nothing is placed twice and no
route suddenly doubles up on trainers.
**If you don't, you lose nothing you were using**, and the mod no longer asks you to install Cobblemon
to get roads.
**The gyms beside towns went with them**, for the same reason: the gym list is COBBLEVERSE's and the
markers are named after Gym Leaders. Towns still get a gym placed right next to them — it is
**[Cobblemon Nuzlocke & Soul Link](https://modrinth.com/mod/cobblemon-nuzlocke-soullink)** that places
it now, and the setting moved to the NUZLOCKE tab under the same name. Worlds in progress keep every
gym they already have, and no town is given a second one.
Two smaller things go with them: the "you can't Escape Rope out of a battle" check now asks Cobblemon
politely and simply doesn't apply when it isn't installed; and the battle-crash guard from 1.0.6 (#31)
moved into the Nuzlocke mod, which is where the battles it protects come from.
### Removed
- Every route-trainer setting: `route_trainers`, `route_trainer_entity`, `route_trainer_density`,
`trainer_los_range`, `route_trainer_challenge_delay_ticks`, `route_trainer_skirmishes`. They keep the
same names in the Nuzlocke mod, so worlds in progress keep their choices.
- The **Gyms beside towns** setting, and the gym structure list that came with it. Both live in the
Nuzlocke mod now, under the same names.
- The **Escape Rope**, and with it every item this mod had. It lives in Cobblemon Nuzlocke & Soul Link
now, and answers to all three of the ids it has ever had so no world loses the ropes it holds.
- Cobblemon as a dependency, on both loaders and on both stores.
Closes #128, closes #126, closes #64, closes #93, closes #123, closes #127, closes #130, closes #131.
release
Routes 1.0.33 (NeoForge)
1.0.33+neoforge1 авг. 2026 г.121Minecraft: 1.21.1neoforge
Что нового
The Nuzlocke rules move out into their own mod. 🧳
### 🧳 Nuzlocke & Soul Link is now its own mod
Everything about the run — one catch per zone, permadeath, mandatory nicknames, the shiny clause,
level caps, the starter randomiser, Defeated Catch and Soul Link co-op — now lives in
**Cobblemon Nuzlocke & Soul Link**, a separate mod that depends on this one.
**Playing a Nuzlocke? Install it and nothing changes.** Your world keeps its zone log, its deaths
and its soul links — the save data is read from exactly where it always was — and your settings come
across on their own, both the global ones and the per-world rules. The NUZLOCKE tab is still on the
create-world screen; the add-on puts it there.
**Not playing a Nuzlocke?** This release is lighter and there is nothing to do.
Why split at all: the two do different jobs. Routes builds the world — roads between structures,
named routes and towns, the map integration and the waypoints. The Nuzlocke rules are a way to
*play* in that world, and plenty of people want one without the other.
### 🧭 What Routes is now
Roads, named zones, map integration, waypoints and the Escape Rope. That is the whole mod.
### 🐛 Fixed
- Opening the create-world screen could crash when a mod registered config options that clashed by
name with another's. The option catalog now refuses the clashing source and says so in the log,
instead of failing later with a message that pointed nowhere near the cause.
release
Routes 1.0.33 (Fabric)
1.0.33+fabric1 авг. 2026 г.207Minecraft: 1.21.1fabric
Что нового
The Nuzlocke rules move out into their own mod. 🧳
### 🧳 Nuzlocke & Soul Link is now its own mod
Everything about the run — one catch per zone, permadeath, mandatory nicknames, the shiny clause,
level caps, the starter randomiser, Defeated Catch and Soul Link co-op — now lives in
**Cobblemon Nuzlocke & Soul Link**, a separate mod that depends on this one.
**Playing a Nuzlocke? Install it and nothing changes.** Your world keeps its zone log, its deaths
and its soul links — the save data is read from exactly where it always was — and your settings come
across on their own, both the global ones and the per-world rules. The NUZLOCKE tab is still on the
create-world screen; the add-on puts it there.
**Not playing a Nuzlocke?** This release is lighter and there is nothing to do.
Why split at all: the two do different jobs. Routes builds the world — roads between structures,
named routes and towns, the map integration and the waypoints. The Nuzlocke rules are a way to
*play* in that world, and plenty of people want one without the other.
### 🧭 What Routes is now
Roads, named zones, map integration, waypoints and the Escape Rope. That is the whole mod.
### 🐛 Fixed
- Opening the create-world screen could crash when a mod registered config options that clashed by
name with another's. The option catalog now refuses the clashing source and says so in the log,
instead of failing later with a message that pointed nowhere near the cause.
release
Cobblemon Routes 1.0.0 (NeoForge)
1.0.0+neoforge10 июл. 2026 г.185Minecraft: 1.21.1neoforge
Что нового
**Out of the testing phase — Cobblemon Routes 1.0!** 🎉 This release also carries everything since
the last published build (0.77.0); the highlights of that journey are recapped at the end.
### 🗺️ One capture per city, per route, per area
- The Nuzlocke first-encounter rule now follows the world's real geography **completely** (#42):
every **city**, every **route**, every named enclosed **area** (A1, A2, …) is its own capture
zone — and the **open wilderness is one single shared zone** per dimension. It no longer borrows
the nearest zone's slot: **growing your road network is how you earn new capture zones**.
### 🛣️ Ring roads — your region fills itself in
- The road network now keeps **closing loops**: towns that are close on the map but far apart by
road get a direct connection, and every loop **encloses a new named AREA** (= a new capture
zone). Watch the teal pockets multiply as your region matures. Toggleable (**Ring roads**), and
ops can force it anytime with **`/routes weave`**.
### 🏋️ Gyms move into town
- With a gym pack installed (e.g. COBBLEVERSE), every discovered city now gets a **gym placed right
beside it** (#42) — no more gyms lost alone in the wilderness. One per town, just outside the
streets, on its own capture zone. Toggleable (**Gyms next to cities**).
### ⌨️ The Nuzlocke log is one key away
- Press **I** (rebindable) to open your **visited-zones log** anywhere — same screen as
`/nuzlocke log`.
### 🏪 Store pages refreshed
- The project descriptions were rewritten to showcase everything the mod does today (#22), in both
a short and a full form, on both stores.
---
### 📜 Everything since 0.77.0, in brief
- **Routes**: every world setting moved to the create-world tabs (applied BEFORE generation);
unified curvy + painted + signposted route generation with no roads-to-nowhere; per-route random
**surfaces** and **illumination** (surface/tunnel/underwater); clear **water crossings** framed by
lane-marker rocks; junction plazas + signs; towns-only waypoints.
- **The map**: Xaero chunk-paint with correct, subtle per-category colours; **enclosed-only teal
areas with names** like *A3-Frostpine*; a **control column on the world map** (paint toggle,
repaint, live City/Route/Area intensity sliders); zone pop-ups that fire exactly when the paint
under you changes, in your chosen style.
- **Nuzlocke**: simplified, always-on core ruleset (permadeath, spectator-on-loss, Hard difficulty);
RCT owns the level cap; capped leads no longer block the team EXP share; Defeated Catch survives
battle-end; shiny clause; dedicated **Starter** section (Mix/Random modes, filters, **shiny
starters by default**); **visited-zones log** (key I) and **Soullock linked-teams summary** GUIs.
- **Trainers**: route trainers with sight-line challenges, a **density** setting (Low → Brutal,
scaling with route length), owed-battle memory across relogs, and ambient **skirmishes** with a
10–15 block standoff, strict one-on-one duels and a faint-the-loser finale.
- **Commands**: brand-new **`/routes`** and **`/nuzlocke`** roots (status, list, nearest, zone, tp,
rename, weave, repaint, log, map, summary…) with the old root kept as alias.
- **Cities**: villages-only by default, with a 16-entry **Cities include** checklist (Cobblemon
fossils, ruins, fishing boats, shipwreck coves, outposts, pyramids, huts, igloos, mansions, trail
ruins, portals) — you decide what counts as a town.
release
Cobblemon Routes 1.0.0 (Fabric)
1.0.0+fabric10 июл. 2026 г.719Minecraft: 1.21.1fabric
Что нового
**Out of the testing phase — Cobblemon Routes 1.0!** 🎉 This release also carries everything since
the last published build (0.77.0); the highlights of that journey are recapped at the end.
### 🗺️ One capture per city, per route, per area
- The Nuzlocke first-encounter rule now follows the world's real geography **completely** (#42):
every **city**, every **route**, every named enclosed **area** (A1, A2, …) is its own capture
zone — and the **open wilderness is one single shared zone** per dimension. It no longer borrows
the nearest zone's slot: **growing your road network is how you earn new capture zones**.
### 🛣️ Ring roads — your region fills itself in
- The road network now keeps **closing loops**: towns that are close on the map but far apart by
road get a direct connection, and every loop **encloses a new named AREA** (= a new capture
zone). Watch the teal pockets multiply as your region matures. Toggleable (**Ring roads**), and
ops can force it anytime with **`/routes weave`**.
### 🏋️ Gyms move into town
- With a gym pack installed (e.g. COBBLEVERSE), every discovered city now gets a **gym placed right
beside it** (#42) — no more gyms lost alone in the wilderness. One per town, just outside the
streets, on its own capture zone. Toggleable (**Gyms next to cities**).
### ⌨️ The Nuzlocke log is one key away
- Press **I** (rebindable) to open your **visited-zones log** anywhere — same screen as
`/nuzlocke log`.
### 🏪 Store pages refreshed
- The project descriptions were rewritten to showcase everything the mod does today (#22), in both
a short and a full form, on both stores.
---
### 📜 Everything since 0.77.0, in brief
- **Routes**: every world setting moved to the create-world tabs (applied BEFORE generation);
unified curvy + painted + signposted route generation with no roads-to-nowhere; per-route random
**surfaces** and **illumination** (surface/tunnel/underwater); clear **water crossings** framed by
lane-marker rocks; junction plazas + signs; towns-only waypoints.
- **The map**: Xaero chunk-paint with correct, subtle per-category colours; **enclosed-only teal
areas with names** like *A3-Frostpine*; a **control column on the world map** (paint toggle,
repaint, live City/Route/Area intensity sliders); zone pop-ups that fire exactly when the paint
under you changes, in your chosen style.
- **Nuzlocke**: simplified, always-on core ruleset (permadeath, spectator-on-loss, Hard difficulty);
RCT owns the level cap; capped leads no longer block the team EXP share; Defeated Catch survives
battle-end; shiny clause; dedicated **Starter** section (Mix/Random modes, filters, **shiny
starters by default**); **visited-zones log** (key I) and **Soullock linked-teams summary** GUIs.
- **Trainers**: route trainers with sight-line challenges, a **density** setting (Low → Brutal,
scaling with route length), owed-battle memory across relogs, and ambient **skirmishes** with a
10–15 block standoff, strict one-on-one duels and a faint-the-loser finale.
- **Commands**: brand-new **`/routes`** and **`/nuzlocke`** roots (status, list, nearest, zone, tp,
rename, weave, repaint, log, map, summary…) with the old root kept as alias.
- **Cities**: villages-only by default, with a 16-entry **Cities include** checklist (Cobblemon
fossils, ruins, fishing boats, shipwreck coves, outposts, pyramids, huts, igloos, mansions, trail
ruins, portals) — you decide what counts as a town.
beta
Cobblemon Routes 0.77.0 (NeoForge)
0.77.0+neoforge3 июл. 2026 г.69Minecraft: 1.21.1neoforge
Что нового
### 🏞️ City flattening is now opt-in
- **`flatten_cities` now defaults off** (#6). Terrain flattening could look rough on hilly ground, so it's
no longer on by default — your worlds keep their natural landscape. Want the flat town platforms? Just
flip **`flatten_cities`** back on in the config or on the **Routes** tab of the create-world screen. 🏙️
beta
Cobblemon Routes 0.77.0 (Fabric)
0.77.0+fabric3 июл. 2026 г.170Minecraft: 1.21.1fabric
Что нового
### 🏞️ City flattening is now opt-in
- **`flatten_cities` now defaults off** (#6). Terrain flattening could look rough on hilly ground, so it's
no longer on by default — your worlds keep their natural landscape. Want the flat town platforms? Just
flip **`flatten_cities`** back on in the config or on the **Routes** tab of the create-world screen. 🏙️
beta
Cobblemon Routes 0.68.1
0.68.126 июн. 2026 г.196Minecraft: 1.21.1fabric
Что нового
### Fixed — mod icon
- The jar embedded a 504-byte placeholder icon, so Mod Menu and launchers showed an old/blank icon. It now
embeds the real **Cobblemon Routes** logo (256×256 PNG). The Modrinth project title + icon were already
correct; this fixes the icon shown from the jar itself.
beta
Cobblemon Routes 0.68.1 (NeoForge)
0.68.1+neoforge26 июн. 2026 г.59Minecraft: 1.21.1neoforge
Что нового
### Fixed — mod icon
- The jar embedded a 504-byte placeholder icon, so Mod Menu and launchers showed an old/blank icon. It now
embeds the real **Cobblemon Routes** logo (256×256 PNG). The Modrinth project title + icon were already
correct; this fixes the icon shown from the jar itself.
beta
Cobblemon Routes 0.68.0
0.68.026 июн. 2026 г.30Minecraft: 1.21.1fabric
Что нового
### Fixed — NeoForge launch crash
- **0.67.0 crashed on NeoForge launch** (`Registry Object not present: capsule_pedestal`): the shared
client init resolved the capsule-pedestal block-entity type inside the NeoForge `@Mod` constructor, which
runs **before** NeoForge populates the registry. The renderer is now registered **per loader at a
post-registry moment** — Fabric from its `ClientModInitializer`, NeoForge from
`EntityRenderersEvent.RegisterRenderers` (mod bus). Fabric was unaffected.
### Changed — publishing
- Modrinth now publishes a **separate version per loader** — Fabric as `<ver>`, NeoForge as
`<ver>+neoforge` — instead of bundling both jars in one version (Modrinth Content Rules §5.7: one primary
file per version). CurseForge keeps both files in the one release.
beta
Cobblemon Routes 0.68.0 (NeoForge)
0.68.0+neoforge26 июн. 2026 г.29Minecraft: 1.21.1neoforge
Что нового
### Fixed — NeoForge launch crash
- **0.67.0 crashed on NeoForge launch** (`Registry Object not present: capsule_pedestal`): the shared
client init resolved the capsule-pedestal block-entity type inside the NeoForge `@Mod` constructor, which
runs **before** NeoForge populates the registry. The renderer is now registered **per loader at a
post-registry moment** — Fabric from its `ClientModInitializer`, NeoForge from
`EntityRenderersEvent.RegisterRenderers` (mod bus). Fabric was unaffected.
### Changed — publishing
- Modrinth now publishes a **separate version per loader** — Fabric as `<ver>`, NeoForge as
`<ver>+neoforge` — instead of bundling both jars in one version (Modrinth Content Rules §5.7: one primary
file per version). CurseForge keeps both files in the one release.
beta
Cobblemon Routes 0.67.0
0.67.025 июн. 2026 г.32Minecraft: 1.21.1fabric
Что нового
### Fixed — route elevation, waystone names, arrival banner
- **Routes no longer arrive on the rooftops of cities, and the exaggerated Y jumps are gone.** The route
frontier carried its *starting* Y forward instead of following the terrain, so tunnels bored at the wrong
height and a mountain-crossing road kept the mountain's elevation all the way into a lower city. The
frontier now re-anchors to the **actual ground** at the end of each segment, so routes descend toward a
city instead of landing on its roof. Tunnels also trigger on a smaller climb (rise ≥ 6, was 8) for
flatter roads through hills.
- **No more nameless waystones.** A `GenerateWaystoneNameEvent` hook gives any blank waystone (our spawn
waystone, or any the pack left unnamed) a deterministic city name; real structure/town names (e.g.
"Camphrier Town") are kept. Already-placed blank waystones are also named when first activated.
- **The "Now entering …" banner always matches the waystone now.** It only fires for a REAL (waystone- or
structure-confirmed) name, never a predicted placeholder — so it no longer announces a made-up name that
differs from the waystone you actually see.
### Diagnostics
- Xaero chunk-paint: the client now logs how many cities/routes it received, and logs once when the
highlighter actually paints a chunk — to pinpoint, in-game, whether a missing tint is a data or a render
problem (registration itself already succeeds).
beta
Cobblemon Routes 0.64.0
0.64.025 июн. 2026 г.35Minecraft: 1.21.1fabric
Что нового
### Added — NeoForge mixin parity
- The three mixins now apply on **both** loaders: **PC-lock** (`PCLinkManagerMixin`), the create-world
**NUZLOCKE/ROUTES tabs** (`CreateWorldScreenMixin`), and the **battle-forfeit block**
(`ForfeitActionResponseMixin`). Each loader's Loom generates its own refmap (the mixin sources are
duplicated per module for now; a shared-common config can dedupe later).
- `neoforge.mods.toml`: registered both mixin configs, added Cobblemon (`ordering = AFTER`) + Cloth
Config dependencies, and pointed `displayURL` at the public wiki (dropped the private-repo link).
- Still NeoForge-pending: Xaero map integration (Fabric-only). NeoForge jar still needs in-game verify.
beta
Cobbleverse RPG - NUZLOCKE 0.45.0
0.45.014 июн. 2026 г.615Minecraft: 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11fabric
Что нового
# Changelog
All notable changes to this project are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Planned
- A real CreateWorldScreen tab for choosing the starting-city type (the `spawn_city_structure_tags`
list covers the function for now; default is the village tags → effectively random nearest).
- Per-variant city tags (so the starting city type can be e.g. only "fighting" bca villages).
- **Dive item** (Phase 9): underwater breathing/mobility to travel the aquatic routes (HM Dive-style).
## [0.45.0] - 2026-06-14
### Fixed — No route toast while inside a town/structure
- **Route-entry toasts are now suppressed whenever the player stands inside any generated structure**
(village/city, gym, …), not just within a fixed 64-block radius of the recorded centre. Fixes the
"route toast while in a city" report for villages whose footprint extends past that radius
(`getStructureContaining` check in `RouteTracker`).
## [0.44.0] - 2026-06-14
### Fixed — Downed wilds stay put and can't be re-battled
- **A defeated wild lying in its Defeated-Catch window can no longer re-enter combat.** Any battle that
would include a downed wild is cancelled at `BATTLE_STARTED_PRE` — it can only be re-caught, not
fought again.
- **The downed body is kept inert.** Its freeze (AI off, navigation stopped, zeroed velocity, lying
SLEEP pose) is now re-asserted every second, so flows that re-enable AI or recalculate the pose can't
make it wander or stand back up.
## [0.43.0] - 2026-06-14
### Added — Differentiable road intersections
- **Crossings now get a contrasting plaza** so they stand out from the road ("haz las intercepciones
más diferenciables"): where two roads cross (out in the open, away from cities), the junction is
paved as a stone-brick ring around a polished-andesite floor, radius 3 — wider than the 2-wide road
— in addition to the existing four-line junction signpost. Skips aquatic crossings.
## [0.42.0] - 2026-06-14
### Added — Mineshaft tunnels through mountains
- **Routes now bore tunnels through terrain too costly to go around.** When a road is connecting to a
known node and a segment's surface path would climb ≥ `TUNNEL_RISE_TRIGGER` (12) blocks — or no
surface path exists at all — the road bores a straight, constant-height **mineshaft** toward the
target instead of contouring up and over the mountain. (The user's explicit exception to the
never-terraform rule: "si una ruta ya ve un nodo pero el costo es demasiado alto… como un mineshaft".)
- The tunnel is 3 wide × 4 high, floored with the route's path block, with an **oak frame + beam + a
hung lantern** every 5 cells for support and light. Carved blocks are removed without dropping items.
- It **self-terminates**: each segment re-checks the surface, so it keeps tunnelling while the mountain
stays ≥12 above the bore and resumes normal surface paving once the terrain descends to meet it.
- Won't bore through other structures (a centreline cell inside a foreign structure cancels the tunnel,
falling back to the normal stall/retry).
## [0.41.0] - 2026-06-14
### Changed — Routes flatter + kept off the coast
- **Routes now keep a buffer inland from shorelines** ("aléjalas de la costa"). A bounded multi-source
BFS from water cells fills a coast-distance gradient (`Snapshot.coastCost`); the A* pays
`(COAST_RADIUS - dist) * COAST_COST` for cells within 6 of water, so roads stay ~a few blocks off
coasts instead of hugging them — while still able to approach/bridge water when there's no
alternative (the penalty is finite). Water cells themselves are unchanged (they already pay
`WATER_COST`).
- **Routes prefer flatter ground**: the per-step climb penalty (`SLOPE_COST`, applied to the square of
the height change) is raised 5 → 7, so roads contour around hills on gentler grades.
- A* optimality preserved: both penalties only raise real step cost above the (still admissible)
heuristic.
## [0.40.0] - 2026-06-13
### Added — Hunger toggle + PC-only-at-block enforcement
- **Hunger toggle now enforced.** When the world's `enableHunger` rule is off, survival/adventure
players are kept fed once a second (food + saturation topped, exhaustion zeroed) so they never
starve; when on (the default) vanilla hunger drains normally. (`NuzlockeManager.enforceHunger`.)
- **"PC only at the PC block" now enforced.** A `PCLinkManager` mixin drops remote/portable PC links
(a plain `PCLink` or the predicate overload) when the rule is on, so the PC can only be opened at a
real PC block. The block's own `ProximityPCLink` is never touched — normal PC use (the only way to
store dead Pokémon in a Nuzlocke) keeps working. Blocked remote opens tell the player why. The rule
applies only in Nuzlocke worlds.
### Notes
- Both rules read the per-world value (`NuzlockeManager.effectiveRules()`) when the world is configured,
else the global config — same as the rest of the 0.39.0 options.
## [0.39.0] - 2026-06-13
### Added — NUZLOCKE tab at world creation (all options, visible at last)
- **A real NUZLOCKE tab on the create-world screen**, sitting next to GAME / WORLD / MORE
(`CreateWorldScreenMixin` widens the tab-navigation `Tab[]`). It shows the four gamemode toggles
inline plus an **"All Nuzlocke options…"** button to the full screen. This replaces the old
top-left button that was hidden behind the tab bar — the reason the options weren't visible at
world creation.
- **The setup screen now exposes every option** (15 total) in a two-column layout with sliders for the
integers: Nuzlocke, encounter lock, permadeath, spectator-on-loss, healing mode, starter mode,
**starter level (1–25), shared EXP, EXP-per-KO, EXP boost (1–16×), capture-zone mode, share
same-structure zones, route generation, hunger, PC-only-at-block**.
- Choices made in the tab/screen are **parked per change** and pushed to the integrated server on world
join; they only configure a **new (unconfigured) world**, so loading an existing world never gets its
rules clobbered (`preWorld` flag on the submit payload, gated server-side).
### Changed
- The world-setup payloads now carry the full rule set as **one NBT blob** (`NuzlockeRules`) instead of
a 6-field tuple (`PacketCodec.tuple` maxes at 6) — this is what let the long option tail reach the
world. `NuzlockeData` persists all 15 per world (older saves fall back to the rule defaults).
- The Nuzlocke manager now reads **starter level, EXP boost, capture-zone mode, share-structure zones,
and route generation** through the per-world rules when the world is configured (else the config),
via `NuzlockeManager.effectiveRules()`.
## [0.38.0] - 2026-06-13
### Changed — Routes clear whole trees + English biome names
- **Routes now fell entire trees in the path.** When a route's clearance pass hits a log or leaf, it
flood-fills the connected logs+leaves (26-neighbour BFS, bounded) and removes them all — no floating
canopy left behind, no item drops (`fellTree` in `RouteGenerator.clearAbove`). Previously only the
single block directly above the road was cleared, leaving stumps and hovering foliage.
- **Route names are now `"Route N: <Biome> <Biome>"` in English, derived from the biomes the road
traverses** (e.g. `Route 3: Plains Forest`). Replaces the old Spanish flavour-name pool. The name is
stamped eagerly with the start biome while a directional walk is being laid (`Route 3: Plains`), then
re-stamped with both endpoint biomes — keeping its number — once the walk connects to a node.
Endpoint biomes that match collapse to a single word (`Route 4: Taiga`). `biomeWord`/`biomeSpan`
helpers in `RouteGenerator`; `nextRouteName(descriptor)` / `restampDescriptor` in `RouteData`.
## [0.37.0] - 2026-06-13
### Added — Nuzlocke options (config; world-creation tab is the next step)
- **Starter level** (`nuzlocke_starter_level`, default 5, max 25): a freshly chosen starter is set to
this level on `STARTER_CHOSEN`.
- **EXP boost** (`nuzlocke_exp_boost`, integer, default 1×): multiplies every EXP gain via
`EXPERIENCE_GAINED_EVENT_PRE`.
- **Capture-zone mode** (`nuzlocke_zone_mode`: BIOME / ROUTE / BOTH) + **`nuzlocke_share_structure_zones`**
(same-type structures share one zone vs. one per instance). Biome zones are selectable again; ROUTE
(city/route/structure) stays the default, BOTH adds a biome fallback in open wilderness.
- Flags **`nuzlocke_enable_hunger`** and **`nuzlocke_pc_only_at_block`** (the PC-block lock + hunger
enforcement wiring follows).
### Notes
- These live in the config screen (`/cobbleverserpg config` or key K) for now. Moving them into a
proper **NUZLOCKE tab** in the world-creation screen needs the per-world setup payload to switch from
a 6-field tuple to an NBT blob (`PacketCodec.tuple` maxes at 6) — that refactor is the next step.
## [0.36.0] - 2026-06-13
### Changed
- **Routes seek flat ground instead of charging over mountains.** Directional walks now sample
candidate headings each step and steer toward the **flattest** one (with a small on-course bias),
and the A* climb penalty is much stronger (squared height-change × 5). Roads contour around hills
and hug level terrain — and they still **never terraform**; only the existing surface is paved.
- **Natural, unambiguous route names**: a themed pool ("Sendero del Roble", "Paso del Río", "Vereda
Brumosa"…) replaces "Ruta 1S"-style names, removing the S/6 confusion; names cycle with a numeral
suffix once the pool is exhausted.
## [0.35.0] - 2026-06-13
### Added
- **Capsule Display Pedestal** (Module 5, phase 2): a craftable block (6 quartz blocks + an amethyst
shard) that displays a sealed Pokémon. Right-click it with a **filled** Pokémon Capsule to set the
capsule on the pedestal — it **floats, bobs and spins** above the block (block-entity renderer),
with the sealed Pokémon's **name billboarded** over it when you're close. Right-click empty-handed
to take the capsule back; breaking the pedestal drops it. This is the mod's first custom block
(block + block-entity + renderer infrastructure, in a new `block` package).
## [0.34.0] - 2026-06-13
### Changed
- **Nuzlocke zones are never biome-based.** A position now resolves only to the **city**, **named
route**, or **structure** it belongs to; open wilderness falls back to the **nearest city or route**
(whichever is closer), never to a biome. The only non-city/route/structure key is a single generic
"Wilderness" zone, and only when nothing has been discovered yet. (Legacy biome-keyed records from
old saves still display via their biome name; `/cobbleverserpg nuzlocke reset` for a clean chart.)
- **Directional walks wander more while searching** for a node: a stronger per-segment random drift
plus a slow sinusoidal sway sweeps the walk across directions, so roads cover more ground (and reach
more nodes) instead of ruling near-straight lines.
- **Roads are named the moment they start being laid**, not only when they connect: a directional walk
gets its "Ruta N<dir>" name (from its bearing) as soon as it begins, and carries that name over to
the final city edge when it connects. Abandoned walks release their provisional name (no save leak).
## [0.33.0] - 2026-06-13
### Added
- **Nuzlocke setup from the main menu** (GDD Module 8 — the CreateWorldScreen integration): the vanilla
**Create New World** screen now has a "Nuzlocke Rules (Cobbleverse)" button (top-left). It opens the
rule screen pre-world; the chosen rules are parked client-side (`PendingNuzlockeRules`) and pushed to
the integrated server on join, configuring that world — so you set the Nuzlocke up while creating the
world instead of waiting for the in-world prompt. The in-world first-join prompt and
`/cobbleverserpg nuzlocke setup` still work for already-running worlds.
## [0.32.1] - 2026-06-13
### Fixed
- **Server-tick crash in the route engine** (`NullPointerException` in `RouteData.edgeKey`): a shelved
**directional walk** (whose target is a `walkKey`, so the job's `b` node is null) was requeued as a
fixed `Edge(a, b)` with a null `b`, which then NPE'd in `isCompleted` and took down the tick loop.
Walks now requeue by key into `pendingWalks` and city-edges into the queue (`shelveJob()`), and
`enqueue()` drops any malformed (null-endpoint) edge as a safety net.
## [0.32.0] - 2026-06-12
Sprint from the new testing environment.
### Added
- **Notification style toggle** (`notification_style`, client-side): the mod's pop-ups can be shown
as a corner **toast**, a big on-screen **announcement** (title + subtitle), or a **chat** line —
routed through a new `Notifications` client helper (waypoint discovery uses it).
- **Kanto gyms are road "cities"**: a shipped `#cobbleverse_rpg:gyms` structure tag (Brock, Misty,
Lt. Surge, Erika, Koga, Sabrina, Blaine, Giovanni, Kanto League — optional entries) is added to
`route_city_structure_tags`, so roads connect the gyms. Region gyms also connect via
`connect_all_structures`.
- **Challenged players turn to face the trainer**: when a route trainer's line-of-sight engagement
fires the "!", the player's head snaps toward the NPC (synced to client) to acknowledge the duel.
### Changed
- **No item revives in Nuzlocke**: any item / machine / command that would revive a fainted (0 HP)
Pokémon is rejected in `onHealAttempt`; only a Pokémon's **move** (e.g. Revival Blessing, which is
applied by the battle engine and never hits this out-of-battle gate) can bring a fainted ally back.
- **Healing config reads as "Healing Allowed"** (en) / "Curación Permitida" (es); the `ITEMS_ONLY`
mode no longer implies revives.
- **Game-over is a mass notification**: losing the run now pushes a bold **title + subtitle + sound**
to every player (plus the existing chat broadcast), not just a chat line.
- **One command root**: the client config command moved from `/cobbleverse_rpg` to `/cobbleverserpg`,
unifying with the server's `routes`/`nuzlocke`/`soullock` subcommands.
- **License changed from CC0 to a revenue-share, source-available license** ("if you make money, the
author makes money"): free for personal/non-commercial use; commercial use requires a revenue-share
agreement. `fabric.mod.json` license id updated.
### Datapacks (testing profile) — reverted (see notes)
- **All-region gyms**: enabling the Hoenn/Johto/Sinnoh datapacks **crashes world load** on their own
because they reference **Terralith** biomes (Terralith-DP must be enabled too — that's why all four
sit together in `datapacks/extra/`). They also don't persist: the **Modrinth profile restores
pack files** on launch. To get every region's gyms, enable all four (regions **+** Terralith) via
the world's Data Packs screen — note Terralith overhauls terrain. The mod's `#cobbleverse_rpg:gyms`
tag (above) connects whichever gyms are present, so Kanto works out of the box.
- **Hunger**: the No Hunger datapack is Modrinth-managed and auto-restored; disable it through
Modrinth / the pack to re-enable hunger (a manual file move gets reverted on launch).
### Deferred
- **PC requires the block**: blocking remote PC access safely needs the pack's exact remote-PC
mechanism (likely cobblenav) identified first — a blind Cobblemon `PCLinkManager` mixin risks
breaking all PC access, so it's held until the trigger is confirmed in-game.
## [0.31.0] - 2026-06-12
### Added
- **Pokémon Capsule** (PLAN Módulo 5 "Encapsulación", supersedes the GDD v1 Showcase): craft with
3× glass + 1 amethyst shard. **Sneak + use** the empty capsule on your own sent-out Pokémon to
seal it — it leaves your possession entirely (party/PC), its full data moves into the item, and
the capsule takes the Pokémon's name with an enchant glint: a display piece for item frames.
**Right-click** a filled capsule to release it back (party, PC overflow; capsule consumed).
Tooltip shows species, level and ✝ for deceased memorials. Battling Pokémon can't be sealed;
dead ones can (and return still dead — permadeath holds). Note: an encapsulated Pokémon doesn't
count as "owned" for the game-over check — capsuling your last living Pokémon ends the run.
Placeable pedestal/miniature display is the planned phase 2.
## [0.30.0] - 2026-06-12
### Added
- **Soullock co-op** (GDD Módulo 6 / PLAN Módulo 2) — groups of up to **four players**:
- **`/cobbleverserpg soullock link <player2> [player3] [player4]`** links the parties **slot by
slot** (GDD: "las mismas ranuras"): every slot where ALL players have a living, unlinked
Pokémon becomes one soul group (persisted in `SoullockData`). A purple broadcast announces the
forged link. `unlink` dissolves your links; `status` lists them with partners, owners and ✝.
- **Shared death**: when a linked Pokémon dies (permadeath), every soulmate dies with it —
**even if its owner is offline** (their party/PC storage is loaded on demand); online owners
get the dark-red message and an immediate game-over check, offline ones meet the news on login.
- **No lone combat** (`prevent_lone_combat`, the config existed since 0.2.0 — now it works): a
linked Pokémon refuses to be sent out unless EVERY partner is in its owner's active party with
the owner online.
- Phase 2 (planned): creating links from the trainer's interaction-ring GUI instead of commands.
## [0.29.0] - 2026-06-12
### Added
- **Defeated bodies now lie on the ground.** No render mixin needed after all: Cobblemon's server
delegate skips pose recalculation when `enablePoseTypeRecalculation` is off, and both that flag
and the pose persist to entity NBT — so Defeated Catch freezes recalculation and forces the
**SLEEP pose**, laying the model down for the whole catch window (survives reloads). Species
without a sleep animation fall back to their idle pose gracefully.
- **Aquatic route signage** (the last Module 1 signage gap): a sign that would land on water now
stands on a **cobblestone buoy** at the surface — aquatic channels get their end/junction
signposts, legible from a boat, instead of silently skipping them. (The submarine bed already
paves in gravel/cobble/stone, never sand, since 0.12.0.)
## [0.28.0] - 2026-06-12
### Added
- **No forfeit in Nuzlocke** (`nuzlocke_no_forfeit`, default on) — the project's **first mixin**.
Cobblemon validates every battle choice through `ShowdownActionResponse.isValid` and re-prompts
the player on an invalid one; `ForfeitActionResponse.isValid` was an unconditional `true`. A
10-line mixin turns it `false` while Nuzlocke is active (honouring the per-world setup), so the
server rejects the surrender through Cobblemon's own illegal-choice flow and tells the player
"there is no surrender — fight!". Fleeing WILD battles is untouched (that's the encounter-lock's
flee rule); this blocks giving up against trainers/players.
- Mixin infrastructure established (`cobbleverse_rpg.mixins.json`), unblocking the visual-faint
spike and future deep hooks.
## [0.27.0] - 2026-06-12
### Added
- **Defeated Catch** (PLAN Módulo 6): defeated wild Pokémon no longer despawn instantly — they
stay on the ground for `defeated_catch_seconds` (default 60), **still catchable**, marked by
grey smoke and a "%s is down — 60s to catch it!" action-bar notice for nearby players.
- Implemented by reviving the wild to **1 HP** the moment it faints (a dying entity can't be hit
by Poké Balls — vanilla projectiles ignore health ≤ 0), with AI frozen and silenced; the 1 HP
also gives the natural near-max catch-rate bonus.
- A **failed capture** during the window despawns the body right after the ball breaks free;
an **expired window** poofs it (cloud + extinguish sound). Either way the **Nuzlocke zone
verdict is deferred**: the encounter only counts as FAILED when the window resolves uncaught —
defeating your first encounter now gives you one last minute to secure it.
- Survives restarts (absolute expiry stored in the Pokémon's persistent data, re-registered on
entity load); level-cap and zone-lock ball gates still apply to the downed body.
- The lying-down faint pose still needs the GeckoLib render spike (Phase 5) — for now the body
stands frozen with smoke.
## [0.26.1] - 2026-06-12
### Fixed
- **0.26.0 did not compile**: the level-cap helper methods (`partyLevelCap`/`overLevelCap`) were
referenced but their definitions were lost in an edit anchored on a method removed in 0.13.
Definitions restored; the pre-push verification now flags missing method/variable symbols on the
mod's own classes as real errors instead of dependency noise.
## [0.26.0] - 2026-06-12
Big batch release from in-game feedback.
### Changed — route engine v2 ("conexión por descubrimiento")
- **The locateStructure pairing is GONE** (it was the remaining performance hog). Each node now
launches up to `max_route_connections` (default **3**) **directional walks**: evenly spread
bearings with random jitter that pave forward segment by segment, drifting gently at random, and
**connect to whatever node the terrain they generate reveals** (≤96 blocks of the frontier) —
bending into its cardinal gate without overwriting anything. Walks persist across restarts, are
abandoned after `route_walk_max_length` blocks (default 1600) or at impassable terrain, and the
per-node connection cap applies on BOTH ends — no more cities with a road per direction.
- `connect_all_structures` now defaults **true**: ruins, fossils, shipwrecks, outposts, henges,
gyms — every surface structure is a node ("camino a todo tipo de estructura"). Existing configs
keep their saved value — flip it manually.
- **Vanilla villages no longer generate** (datapack override of `minecraft:villages`): the pack's
bca villages replace them, so roads stop finding duplicate default villages.
- **Spawn is always beside a waystone**: on a world's first boot a Waystones block is planted two
blocks from spawn (once, persisted; inert without the Waystones mod).
### Changed — Nuzlocke
- **No bag items during battle** (`disable_combat_inventory`, finally wired): healing items on a
Pokémon whose owner is mid-battle are rejected.
- **Capture level cap** (`nuzlocke_capture_level_cap`, default on): Pokémon above your strongest
party member's level can't be caught — the ball bounces (out of battle) or the roll is zeroed
(in battle), and the throw never burns the zone. (RCT's own badge-based cap isn't readable
without its API; the party-max proxy is the house-rule equivalent.)
- **Zone header**: the capture-zone notification is now a big centred on-screen title + subtitle
(zone name + ○●✔✘ state) instead of an action-bar line.
- **Setup screen** gained a **starter selection** row (Default / Default+random / Three random),
persisted per world and overriding the global config.
### Changed — route trainers
- **Line of sight 15 blocks** (new default; existing configs keep their saved value).
- **Instant battles**: on sight the trainer engages immediately — no walk-up. Busy players (already
battling) reset the trainer's recognition: it simply retries when they're free and still in view.
- **Gym leaders & Elite 4 exempt**: trainers standing inside ANY structure (gyms, league towers)
never auto-engage — they require direct interaction.
### Deferred (PLAN)
- **Forfeit removal** needs a mixin into Cobblemon's forfeit action (no event exists) — first mixin
of the project, scheduled separately.
- **Xaero chunk-colour zone layer** needs Xaero's WorldMap jar in `libs/` to compile against its
highlighter internals; `nuzlocke map` waypoints remain the interim map view.
- **Tera/Mega/Gmax world toggles** belong to mega_showdown's config — can't be controlled from
another mod without its API.
## [0.25.0] - 2026-06-11
### Added
- **Route trainers duel each other** (`route_trainer_skirmishes`, default on): two idle route
trainers within sight of each other near a player square off — they face each other, close in,
and exchange battle effects (crit/cloud particles + attack sounds) for ~15 s, ending with a
winner's celebration and the loser fuming. Per-pair 5-minute cooldown; a player entering either
trainer's line of sight takes priority (the duel breaks off and the player engagement runs).
These are **ambient skirmishes**: a real NPC-vs-NPC Pokémon battle with their actual teams needs
the trainer mod's API (Cobblemon only exposes player battles — pvp/pve/pvn), noted in the PLAN
for the rival-system work.
## [0.24.0] - 2026-06-11
### Added
- **Route trainers with line-of-sight auto-battle** (GDD "rutas con entrenadores"), implemented
**mod-agnostically by entity id** (no compile-time dependency on rctmod):
- When a road completes, persistent trainer NPCs (`route_trainer_entity`, default
**`rctmod:trainer`**) are placed along it — one per `route_trainer_spacing` blocks (default
160, max 6 per route), jittered beside the centreline, never in water, away from both cities,
once per route ever (persisted). With the trainer mod absent (or a typo'd id) the feature is
completely inert.
- **Line of sight**: every half second, a trainer within `trainer_los_range` blocks (the config
existed since 0.2.0 — now it does something) with a clear sight line to a player does the
classic routine: **"!"** (angry particle + chime), walks up to the player, and on reach
triggers the battle by simulating the player's interaction — the same code path as
right-clicking, so RCT's own battle flow is what runs. Per trainer-player cooldown (60 s),
10 s chase before giving up; spectators/creative and players already in a Pokémon battle are
ignored.
- Note: if RCT's trainer entity id differs in your pack version, run
`/cobbleverserpg routes structures`-style discovery via `/summon` autocomplete or F3 targeting
and set `route_trainer_entity` accordingly.
## [0.23.0] - 2026-06-11
### Added
- **`/cobbleverserpg routes structures`** (op): dumps every structure in the registry — id, tags,
and a `[CITY]` flag for the ones the current `route_city_structure_tags` already match — to
`cobbleverse_rpg_structures.txt` in the game directory. The way to find a gym's real id instead
of guessing.
- **Roads blend with their biomes**: the paving palette now follows the landscape — deserts and
badlands pave in smooth sandstone/sandstone, snowy and frozen biomes in cobblestone/gravel/stone,
swamps and mangroves in packed mud/coarse dirt, and everywhere else keeps the classic dirt-path
mix. Junction/street detection understands all the new palette blocks (primaries like smooth
sandstone and packed mud count as strict road evidence).
- **Subtle perimeter grooming**: a sparse ring just beyond the road's edge (≈35% of cells, 2-block
band) clears small plants only — grass, ferns, flowers — never trees or solid blocks, so the road
reads cleanly without a shaved strip.
## [0.22.0] - 2026-06-11
### Changed
- **Route generation is much cheaper and smoother.**
- At most **one corridor snapshot + A\* every 2 ticks** (was 4 whole segments per tick — the
snapshot is the expensive part), narrower corridor (detour 28→24), and jobs whose frontier is
far from every player are parked instead of burning processing.
- The per-cell structure-avoidance query is **memoized per chunk**: chunks without structure
references (the vast majority) skip it entirely.
- **Better hill handling**: the climb penalty is now applied to the *square* of the height change
(a 3-block scramble costs 9× a gentle step), so roads contour around elevations on smooth
grades instead of charging up them.
- **Smooth direction changes**: a per-45° turn penalty makes paths flow in progressive curves —
no more hard 90° corners or zigzag stitching.
- **Cities now have four cardinal gates** (N/S/E/W points on the standoff ring): roads leave
through the gate facing their destination and aim at the destination's facing gate, so towns
read like classic Pokémon cities with tidy outlets instead of radial spaghetti.
- **Roads never overwrite each other** (nor village streets): paving that meets an existing road
surface adopts those cells and merges into them; the dock connector likewise preserves the
streets it reaches.
### Added
- **Capture-zone identification on the map and HUD**:
- **`/cobbleverserpg nuzlocke map`** (any player) drops one Xaero waypoint per recorded capture
zone — named with its state symbol (● pending, ✔ captured, ✘ lost) and the zone's real name.
Without Xaero the payloads are harmless. Biome zones have no map anchor and are skipped.
- **Zone HUD** (`nuzlocke_zone_hud`, default on): crossing into a different capture zone shows
its name and state in the action bar (○ free / ● pending / ✔ captured / ✘ lost).
- `WaypointDiscoveredPayload` gained a `showToast` flag so bulk waypoint dumps don't spam toasts.
## [0.21.0] - 2026-06-11
### Changed
- **Nuzlocke zones now follow the world's geography** (GDD: "ciudad/estructura/ruta") instead of
being one-per-biome. A position resolves, in priority order, to: the **city** it is in (≤64
blocks of a known city, including waystone cities), the **named route** it is on (≤32 blocks of
a finished road's segment — "Ruta 1E" is a capture zone of its own, like the classic games), the
**structure instance** it is inside (per-instance key, so two ruins are two zones), and only in
open wilderness the legacy **biome** zone. Zone keys are stable per place; messages, the status
command and toasts show the city/route name. Existing biome-keyed records from older versions
remain valid (they simply stop being hit where a city/route/structure now takes precedence) —
use `/cobbleverserpg nuzlocke reset` for a clean chart.
## [0.20.0] - 2026-06-11
### Added
- **Healing sources are chosen in the world setup** (and changeable later): the Nuzlocke setup
screen gained a fifth selector — All / Machines only / Items only / None (hardcore) — persisted
per world and taking precedence over the global `healing_mode` config; `/cobbleverserpg
nuzlocke setup` (op) re-opens the screen to change it at any time. Hardcore-created worlds take
the global config's mode. Worlds configured before 0.20.0 default to All until re-run.
### Changed
- **`PLAN.md` rewritten (v2, Spanish)** around the full feature roadmap: route trainers + RCT
rivals, structure listing, biome blending, submarine signage; zone redefinition
(city/structure/route), 4-player Soullock with interaction-ring GUI; Ditto HM field moves +
Habitat Table; Sophisticated-Storage Ball Storage / Apricorn Processor (2 fases); Pokémon
encapsulation (PC → display ball item); Defeated Catch (1-minute fainted catch window); and the
Action Combat system (research spike). Includes shipped-state per module and a proposed order.
## [0.19.0] - 2026-06-11
Route-quality release addressing the first in-game testing feedback.
### Fixed
- **Severe lag while routes load.** Two causes removed: corridor pre-generation no longer calls
synchronous `getChunk(FULL, true)` on the server thread (100 ms+ stalls per chunk) — it now only
adds short self-expiring chunk tickets and lets the chunk system generate on its worker threads,
resuming the segment when the corridor turns up loaded; and the boot-time `locateStructure`
storm is gone — each city's neighbour search runs **once ever** (persisted `seeded` flag in
`RouteData`) instead of re-running for every known city on every server start, and seeding is
spaced to one call per 2 s (`routes reset` re-seeds everything).
- **Roads paved across treetops and structures.** The pavers and the A* used the `WORLD_SURFACE`
heightmap, which sits on forest canopy and roofs. Heights now come from a ground probe that
descends through logs, leaves and plants (`RoutePathfinder.groundY`), used by the pathfinder and
every placement helper; additionally the A* marks cells **inside any non-city structure**
impassable (`getStructureContaining`, city tags/ids excluded; disabled in connect-all mode), so
roads detour around ruins/towers/foreign villages instead of crossing them. Paved cells also
clear trunks/canopy up to 6 blocks above (roads are walkable under trees).
- **Routes now actually reach the town streets.** The 0.16 connector walked a straight line and
gave up at the first wall. Docking v2 scans up to 28 blocks around the road end for the nearest
*real* street cell (street block + ≥2 street neighbours, own cells excluded) and paves a 3-wide
connector along a mini-A* path to it — steering around houses; the straight walk remains only as
fallback when no street is found.
- **Submarine routes are now lit**: a sea lantern is embedded in the paved channel floor every 11
cells (same cadence as the land lamp posts).
### Added
- **Hardcore = Nuzlocke game mode at world creation**: creating the world in **Hardcore** in the
vanilla create-world screen auto-enables the full Nuzlocke rule set (lock + permadeath +
spectator-on-loss) — the setup screen then never shows. Non-hardcore worlds keep the first-join
setup screen.
- **Trainer gyms (and anything else) can join the network**: entries in
`route_city_structure_tags` now also match exact **structure IDs** (not just tags), and the new
operator command **`/cobbleverserpg routes addcity [name]`** registers the spot you're standing
on as a named city (default "Gym") and queues its road connections — works for gyms from any
mod and even player builds.
## [0.18.0] - 2026-06-11
### Added
- **Escape Rope** (GDD Module 7 / Phase 9 — first custom item): craft **2× string + 1 ender
pearl → 2 ropes** (shapeless), found in the Tools creative tab. Using it teleports you to a
safe, dry spot at the **nearest known town of the route network** — which includes every
activated waystone, since those register as named cities — so it works with or without the
Waystones mod (a deliberate deviation from the GDD's "nearest visited waystone", using our own
persisted data instead of Waystones internals). Overworld only, blocked while in a Pokémon
battle, 10 s cooldown, consumes one rope (not in creative), enderman teleport sounds at both
ends, action-bar feedback with the town's name. Pixel-art texture + model + es/en names shipped.
## [0.17.0] - 2026-06-11
### Added
- **Starter randomizer** (GDD Module 4) — `starter_selection_mode` finally does something:
- `DEFAULT`: Cobblemon's starter screen untouched.
- `DEFAULT_PLUS_RANDOM` (config default): the vanilla categories plus an extra **"Random"**
category with three random species.
- `THREE_RANDOM`: the screen offers a single category of three random species.
- Random picks are **implemented**, **base-stage** species without the `legendary`/`mythical`/
`ultra_beast` labels, at the same level the pack's own starters use. The offer is seeded from
the world seed + player UUID (and the registry is sorted before shuffling), so each player sees
a stable offer in a given world — reopening the screen or restarting never re-rolls, and the
choice always validates against the same list. Implemented by replacing Cobblemon's
`starterHandler` with a subclass that transforms `getStarterList`; selection, locking and the
mandatory-nickname prompt keep working unchanged.
## [0.16.0] - 2026-06-11
### Fixed
- **Diagonal roads no longer look broken.** The paver stamped a 1-D cross-section perpendicular to
the travel direction; on diagonal stretches those are 5 corner-touching diagonal lines, leaving
checkerboard holes and jagged edges. Each centreline cell now stamps a **round, solid brush**
(radius 2.5) — overlapping discs stay gap-free in every direction, with the ragged-edge
randomness applied to the brush's outer ring. (The A* itself was fine: diagonals already cost √2
with an octile heuristic.)
- Aquatic-channel surface markers are placed as **one buoy per side** of the centreline (outside
the brush); with the new ring-shaped brush edge the old per-edge-cell logic would have built
stone rings walling the channel shut.
### Added
- **Roads now dock into the town's own streets.** When a road finishes, each end extends from the
20-block standoff ring toward the city centre with a narrow 3-wide connector until it touches an
existing village street (dirt path, gravel, cobblestone, coarse dirt, or desert villages' smooth
sandstone), stopping early at building walls/roofs (height jump > 4) and skipping water — so
routes visibly merge into the village path grid instead of dying on the outskirts.
## [0.15.0] - 2026-06-11
### Added
- **Cities adopt their waypoint's name**: activating a waystone within 128 blocks of a known city
now renames that city to the waystone's name (previously only ≤64 blocks collapsed into the
node), and the **end signposts of every finished road touching it are rewritten in place** —
signs, completion broadcasts and route-entry toasts all refer to the city by its waypoint name.
Only a waystone with no city nearby becomes a new node of its own.
- Sign placement is now rename-aware in general: a signpost that already stands at the target spot
gets its text rewritten instead of a second sign being stacked on top of it.
### Removed
- **GitHub Actions build workflow** (`.github/workflows/build.yml`): the Fabric-template CI built
with JDK 25, which Gradle 8.10 can't run, so every push failed and spammed e-mail notifications.
Builds happen locally via `.\gradlew build` (see README); CI can return later properly pinned to
JDK 21 if wanted.