
公路与小径
Highways & Byways生成一个由种子驱动、完全可配置的道路网络——高速公路、普通道路以及带有桥梁和隧道的土路。
Highways & Byways(高速公路与乡间小路)
为你世界打造一个鲜活的公路网络。
你是否曾希望 Minecraft 的村庄相互连接,成为真实世界的一部分,而不是散落在草地海洋中的孤岛?Highways & Byways 会随着你的世界生成,铺设一套基于种子的道路网络——宽阔的高速公路、村庄道路和泥土小径,自然地蜿蜒穿过地形、切过山丘、跨越河流、贯穿山体。
无需指令,无需重置世界。只需探索,道路便会出现在那里。
特性
- 🛣️ 分级道路网络 — 宽阔的主干高速公路构成永无止境的骨干网络,在交叉口和立体交叉桥处交汇。道路分支通往村庄和掠夺者前哨站。泥土小径蜿蜒通向所有其他地表结构——神殿、小屋、遗迹等等。
- 🌄 地形感知建造 — 道路沿平滑样条曲线延伸,通过削切和填充自然地贴合地形,保持坡度适合通行(可调,最大约 45°),并将路肩与周围地面融合,而非简单压平一条带状区域。
- 🌉 桥梁与隧道 — 河流和峡谷会架设带桥面和栏杆的柱式桥梁;山丘会开凿带衬砌拱形洞口的隧道。
- 🎨 17 种材料调色板 — 可分别为每个级别配置宽度和材料:石头、深板岩、黑石、砂岩、海晶石、下界砖等。
- 🧭 手动道路建造 — 使用
/splineroad手动规划并铺设道路,或按需在你周围生成一小片道路网络。 - 🧩 模组结构支持 — 开箱即用地支持模组村庄和结构,并提供完整的数据包附加 API,供整合包作者接入自己的内容。
- 🏔️ 地形模组兼容 — 由于道路是随区块加载动态生成并适应实际地形,Highways & Byways 可与诸如 Terralith 和 Tectonic 等世界生成模组完美共存,像对待原版地形一样在其自定义地形上进行削切、填充、架桥和开隧。
- ⚙️ 确定性且可配置 — 整个网络随区块加载从世界种子一致地生成,游戏内可配置世界生成道路、海洋高速公路、桥梁/隧道行为、坡度限制以及每个级别的宽度/材料。
供整合包与数据包作者使用
Highways & Byways 可通过 数据包 扩展——无需 Java。你可以注册你的结构以享受道路服务,并在生成的道路网络沿线放置路边结构或道路事件。所有内容都是确定性的且由种子驱动,因此你的添加内容会一致地生成,并像原版结构一样跨区块边界稳定存在。
1. 结构道路服务(标签)
网络为哪些结构修路由两个结构标签控制。将你的结构 ID(或结构标签)添加到这些文件的数据包副本中:
data/splineroads/tags/worldgen/structure/human_structures.json— 获得完整的石头道路(默认值:#minecraft:village、minecraft:pillager_outpost)。data/splineroads/tags/worldgen/structure/ignored_structures.json— 网络忽略该结构(默认值:废弃传送门变体,它们通常被埋藏)。
任何不在这两个标签中的地表结构都会自动获得泥土小径。因此,要让你的模组城镇获得石头道路:
// data/yourpack/tags/worldgen/structure/splineroads/human_structures.json (追加,切勿替换)
{ "replace": false, "values": [ "yourmod:trading_post" ] }
要让网络完全无视某个结构,用同样的方式将其添加到 ignored_structures 中。
2. 路边结构与道路事件
将 JSON 文件放入 data/<yourpack>/splineroads/roadside/<name>.json。每个文件对应一个条目。
字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tiers |
"highway"、"road"、"dirt" 的列表 |
— | 允许生成在哪些道路级别上 |
spacing |
整数 | 512 | 沿道路生成尝试之间的平均方块数 |
chance |
浮点数 0–1 | 0.25 | 每次尝试的生成概率 |
offset |
数字 | 0 | 距道路中心线的横向方块数(+ 为右侧)。0 表示位于道路上;小值为路边;较大值则远离道路 |
both_sides |
布尔值 | false | 同时在 -offset 处放置镜像副本(例如两边都放路灯) |
face_road |
布尔值 | true | 使模板朝向道路的行进方向 |
biomes |
生物群系 ID 或 #标签 |
(任意) | 仅在这些生物群系中生成 |
template |
结构 ID | — | 要放置的结构 NBT(data/<ns>/structure/<path>.nbt) |
blocks |
列表 | — | 或使用简单的内联方块(见下文) |
提供 template 或 blocks 中的任意一种。你放置的任何内容都会落在该列的实体表面上(路面或地面)——绝不会悬空;如果那里没有实体地面(例如在跨水桥梁的边缘之外),则会被跳过。
局部坐标空间(用于 blocks 和模板创作)
- +X 沿道路行进方向延伸
- +Z 指向道路右侧(相对于
offset锚点) - y = 0 位于该列的表面
内联方块示例 — 一棵倒在森林泥土小径上挡路的树:
{
"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" } }
]
}
模板示例 — 高速公路旁的加油站:
{
"tiers": ["highway"],
"spacing": 700,
"chance": 0.5,
"offset": 14.0,
"template": "yourmod:gas_station"
}
在游戏中使用结构方块搭建该结构,保存,并将生成的 .nbt 文件发布到 data/yourmod/structure/gas_station.nbt。模板放置时会按区块裁剪,因此任何尺寸都是安全的。模板以 90° 为步长旋转以面向道路;内联方块则精确跟随曲线。
3. 材料与配置
全局开关位于模组配置(splineroads-common.toml)中:worldgenRoads、oceanHighways、各级别的材料和宽度、桥梁/隧道行为、坡度以及路肩宽度。builtinRoadsideFeatures 可禁用模组自带的道路附属特征(路灯、倒树),而不影响数据包/附加内容。
指令
/splineroad point [x y z] | width <w> | material <id> | undo | status | cancel | build | generate [count] [radius] | debug
手动规划并铺设道路,或在你当前所在位置周围生成一小片道路网络。
配置
在游戏内通过 Mods → Highways & Byways → Config 进行配置,或直接编辑 config/splineroads-common.toml。可切换世界生成道路、海洋高速公路、桥梁/隧道行为、坡度限制、路肩宽度以及每个级别的材料/宽度——并且可以独立于任何数据包添加内容,禁用模组自带的道路附属特征(路灯、倒树)。
开发中
Highways & Byways 仍在积极开发中。道路网络总体上已经稳定,但你偶尔可能会遇到看起来稍有偏差的生成区域——一个别扭的斜坡、一个粗糙的过渡,或一座没有完全对齐的桥梁/隧道。非常欢迎提交错误报告和截图,这将有助于确定修复的优先级。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。