A living road network for your world.
Ever wished Minecraft villages felt connected, like part of a real world instead of scattered islands in a sea of grass? Highways & Byways lays down a seed-driven road network as your world generates — sweeping highways, village roads, and dirt trails that wind naturally across the terrain, cut through hills, bridge rivers, and tunnel under mountains.
No commands needed. No world reset required. Just explore, and the roads will be there.
/splineroad, or grow a patch of network around you on demand.Highways & Byways is extensible through datapacks — no Java required. You can register your structures for road service, and place roadside structures or road events along the generated network. Everything is deterministic and seed-driven, so your additions generate consistently and survive chunk borders like vanilla structures.
Which structures the network builds roads to is controlled by two structure tags. Add your structure's id (or a structure tag) to a datapack copy of these files:
data/splineroads/tags/worldgen/structure/human_structures.json — gets full stone roads (defaults: #minecraft:village, minecraft:pillager_outpost).data/splineroads/tags/worldgen/structure/ignored_structures.json — the network ignores it (defaults: the ruined portal variants, which are usually buried).Any surface structure in neither tag automatically gets a dirt road. So to give your modded town stone roads:
// data/yourpack/tags/worldgen/structure/splineroads/human_structures.json (append, don't replace)
{ "replace": false, "values": [ "yourmod:trading_post" ] }
To make the network leave a structure alone entirely, add it to ignored_structures the same way.
Drop JSON files in data/<yourpack>/splineroads/roadside/<name>.json. Each file is one entry.
Fields
| field | type | default | meaning |
|---|---|---|---|
tiers |
list of "highway","road","dirt" |
— | which road tiers may spawn it |
spacing |
int | 512 | average blocks along the road between spawn attempts |
chance |
float 0–1 | 0.25 | probability per attempt |
offset |
number | 0 | lateral blocks from the road center (+ = right). 0 sits on the road; a small value is curbside; larger is off the road |
both_sides |
bool | false | also place a mirror copy at -offset (e.g. lamp posts on both edges) |
face_road |
bool | true | orient a template so it faces along the road's travel direction |
biomes |
biome id or #tag |
(any) | only spawn in these biomes |
template |
structure id | — | a structure NBT to place (data/<ns>/structure/<path>.nbt) |
blocks |
list | — | OR simple inline blocks (see below) |
Provide either template or blocks. Whatever you place is stood on the actual solid surface at that column (road deck or ground) — it never floats; if there's no solid ground there (e.g. off the edge of a bridge over water) it's skipped.
Local coordinate space (for blocks and template authoring)
offset anchor)Inline block example — a fallen tree that blocks dirt roads in forests:
{
"tiers": ["dirt"],
"spacing": 320,
"chance": 0.35,
"offset": 0.0,
"biomes": "#minecraft:is_forest",
"blocks": [
{ "at": [0, 0, -2], "block": "minecraft:oak_log", "props": { "axis": "z" } },
{ "at": [0, 0, 0], "block": "minecraft:oak_log", "props": { "axis": "z" } },
{ "at": [0, 0, 2], "block": "minecraft:oak_log", "props": { "axis": "z" } }
]
}
Template example — a gas station beside highways:
{
"tiers": ["highway"],
"spacing": 700,
"chance": 0.5,
"offset": 14.0,
"template": "yourmod:gas_station"
}
Build the structure in-game with a Structure Block, save it, and ship the resulting .nbt at data/yourmod/structure/gas_station.nbt. Templates are placed clipped to each chunk, so any size is safe. Templates rotate in 90° steps to face the road; inline blocks follow the exact curve.
Global toggles live in the mod config (splineroads-common.toml): worldgenRoads, oceanHighways, per-tier material and width, bridge/tunnel behaviour, grade, and shoulder width. builtinRoadsideFeatures disables the mod's own roadside features (lamps, fallen trees) without affecting datapack/addon entries.
/splineroad point [x y z] | width <w> | material <id> | undo | status | cancel | build | generate [count] [radius] | debug
Plan and bake roads by hand, or grow a patch of network around your current position.
In-game via Mods → Highways & Byways → Config, or edit config/splineroads-common.toml directly. Toggle worldgen roads, ocean highways, bridge/tunnel behavior, grade limits, shoulder width, and per-tier material/width — and disable the mod's own roadside features (lamps, fallen trees) independently of any datapack additions.
Highways & Byways is still actively being developed. The road network is generally solid, but you may occasionally run into spots where generation looks a bit off — an awkward slope, a rough transition, or a bridge/tunnel that doesn't quite line up. Bug reports and screenshots are very welcome and help prioritize fixes.