[原创][开源][Folia] SkyRail列车控制套件——专为Folia设计的工业级现代列车控制与物理引擎
本帖最后由 西园寺铃 于 2026-9-30 09:57 编辑## 来开火车吧,感受真实的高铁司机和调度上班如何被折磨!
> **一句话简介:** 专为 Folia 多区域并发服务端打造的现代列车套件,支持矿车刚性编组、牛顿动力学仿真、移动授权(MA)闭塞计算与 Web 实时调度大屏。
---
### 【插件基本信息】
- **插件名称:** SkyRail Suite(包含 STF、STCS、STA、SkyPCC 四大核心组件)
- **作者:** 本人
- **源码仓库:** (https://github.com/moerail/Skyworld-Railway)
- **官方文档:** [中文完整文档](https://github.com/moerail/Skywo ... b/main/README.zh.md) | [司机手册](https://github.com/moerail/Skywo ... driver/README.zh.md)
- **适用服务端:** **Folia**(原生适配 Shiroha / Folia 26.2 及 26.3)
- **支持 Java 版本:** Java 21+(推荐 Java 25)
- **插件属性:** 本体插件
- **插件类型:** 机械 / 交通 / 机制
- **前置依赖:** 无额外前置,套件内四个组件配套运行即可
- **来源:** 原创
- **开源协议:** MIT License
---
### 【插件简介】
SkyRail Suite 是一套面向现代 Minecraft 多区域并行服务端(Folia)的列车运行、线路拓扑、影子列控与集中调度套件。
插件告别了传统单线程插件“跨区块即崩溃”的局限,解耦了动力学仿真与地面信号控制:
- 在**车载端**,提供牛顿力学积分步进、符合铁路人机工效学的手柄(Hotbar)控制与多语言驾驶室 HUD;
- 在**地面端**,构建有向轨道图(RailGraph)并建立悲观占用账本,参考 ETCS Level 2 与现代城市轨道交通 CBTC 规范,推导连续移动授权(Movement Authority, MA)与动态制动干预曲线;
- 在**调度端**,通过独立 Web 平台(SkyPCC)实现浏览器全线追踪与远程道岔安全控制。
Fig.1 司机驾驶界面,可见上方的运行许可余量和右侧的计分板HMI
---
### 【前言与设计初衷:为什么需要 SkyRail Suite?】
致各位服主、工程师与铁路爱好者:
还在忍受传统单线程铁路插件在 Folia 跨区域线程下频繁报错、死锁与穿模的惨剧吗?还在用十年前落后的“固定闭塞与木牌碰撞”来维系繁忙的轨道网络吗?
在传统单线程时代,铁道服长期依赖经典的红石与牌子体系。但随着服务器迈向Folia的分布式区域线程架构,传统矿车插件只要遇上长编组跨越Region边界,就会引发线程断言崩溃或数据损坏。
本人曾于法国国家铁路(SNCF Voyageurs)机车车辆工程部门工作,主要负责铁路电气牵引系统建模、动力学仿真,以及基础设施与机车车辆的电气兼容性验证(车网电气耦合,EN 50388-2)。
作为一名铁路电气工程方向的从业者与研究者,我希望将现代轨道交通中严谨的“物理动力学、移动授权控制(MA/EoA)、以及控制与保护分离”工程哲学真正引入Minecraft沙盒。
SkyRail Suite正是在这一背景下诞生的开源套件。它采用纯净的数据契约与异步区域线程调度,不仅解决了Folia上的跨区行车难题,更将类似欧洲ETCS与现代地铁CBTC的移动闭塞理念带入方块世界,为大型多核服务器提供兼具工业严谨度与可玩性的现代化列控基座。
---
### 【特别声明】
SkyRail Suite是运行于Minecraft环境中的实验性Java仿真程序。
本项目并非经过实际认证的真实铁路安全系统,亦不声称符合包括以下工业规范或标准在内的准入要求:
- **ERTMS/ETCS SUBSET-026** — *System Requirements Specification*
- **EN 50126** — *Railway Applications – The Specification and Demonstration of Reliability, Availability, Maintainability and Safety (RAMS)*
- **EN 50716:2023** — *Railway Applications — Requirements for software development*
相关协议编号与控制理论仅用于游戏机制仿真与算法探索。
---
### 【四大核心组件架构】
套件采用微内核解耦设计,由四个协同运作的独立模块组成(建议完整配套安装):
```text
Minecraft 玩家 / 矿车 / 轨道 / 红石
│
物理动力学、区域执行与 HMI 驾驶台
│
(不可变数据快照隔离)
│
统一服务契约、遥测数据与事件总线
│
有向轨道图(RailGraph)、占用账本与 MA 列控
│
(SSE 实时推流)
│
浏览器 Web 集中调度大屏与道岔鉴权
```
1. **STF(SkyTrainFolia)**
实体物理动力学引擎。接管矿车编组、牛顿力学加减速、平滑显示同步、多语言驾驶室HUD及实验性手动列车ATP制动执行。
2. **STCS(Skyworld Train Control System)**
地面大脑与控制中心。负责全图RailGraph拓扑寻径、空间物理格占用保留账本,以及类似移动闭塞的MA(行车许可)连续计算与下发。
3. **STA(SkyworldTrainAPI)**
统一契约总线。隔离各模块,保证多线程环境下仅传递不可变数据快照,杜绝跨线程死锁与指针穿透。
4. **SkyPCC(Poste de Commande Centralisée)**
现代化Web调度大屏。无需任何客户端Mod,浏览器原生访问即可实时追踪全服列车动态、监视应答器与道岔状态,并支持基于Token的道岔远程操作。
Fig.2 PCC后台界面
Fig.3 PCC后台切换道岔
---
### 【核心功能亮点】
#### 一、原生Folia多区域并发保障
深度适配Folia区域实体调度器。
STF将各节车厢的位移积分与发包严格收敛在所属的Region线程中,长编组列车跨越多个区域时平稳过渡,全面释放多核算力。
适配层采用动态SPI架构,单JAR同时兼容 Shiroha / Folia 26.2 与 26.3 版本。
#### 二、工业级列控理念:移动闭塞与MA演算
告别传统木牌占道碰撞。
系统沿有向拓扑路径为列车动态计算前方安全余量与制动干预曲线,并提供完整的车载状态机转换:
- **SB(Standby,待命)**
- **FS(Full Supervision,完全监控)**
- **SH(Shunting,调车)**
- **SR(Staff Responsible,目视行车)**
- **TR(Trip,冒进停车)**
- **PT(Post Trip,冒后恢复)**
#### 三、悲观安全哲学:未知绝非空闲
系统运行在“证据保留模型”下。
当列车发生跨区网络延迟、区块卸载或道岔状态未经验证时,控制层绝不假定前方空闲,而是保留物理格占用以阻断后续授权,防止因服务器卡顿造成列车重叠与穿模。
#### 四、机车驾驶台与声效工效学
支持快捷栏(Hotbar)模拟手柄操作,提供四级牵引(P1–P4)、七级常用制动(B1–B7)及紧急制动(EB)。
车载BossBar与计分板整合了多语言HMI界面,并提供基于原版音效的MA变动提示、超速分级预警与滞回保护。
#### 五、零客户端 Mod 与四语言支持
游戏内界面与SkyPCC调度网页原生支持:
- 中文
- English
- Français
- 日本語
Fig.4 英文版HMI界面以及线路两侧的STCS区间信号标志牌(STCS Marker)
网页端采用原生浏览器访问,客户端无需安装任何额外Mod。
---
### 【快速上手与基础操作】
#### 1. 编组与创建
在平直测试轨道上放置矿车后,管理员执行:
```bash
/st scan 6 # 搜索附近6格内的可编组矿车
/st create demo 6 # 将矿车编入名为"demo"的列车中
/st property demo mode manual # 设定列车为手动驾驶模式
```
#### 2. 司机接管与驾驶
坐进车内后,执行以下指令取得驾驶权:
```bash
/st drive # 取得驾驶权(司机离车自动触发EB)
/st forward# 换向器向前(支持/st backward反向)
```
随后即可:
- 使用 `/p1` 至 `/p4` 提升牵引级位;
- 使用 `/b1` 至 `/b7` 施加常用制动;
- 输入 `/eb` 施加紧急制动;
- 执行 `/st hotbar` 使用快捷栏 1–9 槽位模拟物理手柄。
#### 3. 申请移动授权(MA)
在线路已完成 RailGraph 登记的前提下,司机在停车状态下执行:
```bash
/stcs ma demand
```
顶部BossBar与计分板将实时显示当前区段的剩余行车授权距离(Credit)及动态限速。
#### 4. 详细操作与高阶配置
关于类似TrainCarts的自动站停(Station 牌)、道岔拓扑扫描及占用账本诊断,请参考项目仓库内的完整文档:
- (https://github.com/moerail/Skywo ... b/main/README.zh.md)
- [司机快速指引手册](https://github.com/moerail/Skywo ... driver/README.zh.md)
---
### 【环境依赖与下载】
- **运行平台:** Folia 26.2 / 26.3 服务端核心
- **运行环境:** Java 21+(推荐 Java 25)
- **项目 Releases:** (https://github.com/moerail/Skyworld-Railway/releases)
- **网盘镜像:** [百度网盘](https://pan.baidu.com/s/1qf3KAepH0AAlnD5E0HBPnw?pwd=SKRS)(提取码:`SKRS`)
- **本地附件下载:**
### 【查毒报告与安全性验证】
为保障服务器生产环境的运行安全,套件各组件发布构建均已完成第三方在线反病毒引擎检测(VirusTotal):
* **SkyTrainFolia-4.0.6.jar**
(https://www.virustotal.com/gui/f ... cf9500da7?nocache=1)
* **STCS-4.0.4.jar**
(https://www.virustotal.com/gui/f ... 321a71879?nocache=1)
* **SkyworldTrainAPI-2.1.1.jar**
(https://www.virustotal.com/gui/f ... e0363dba3?nocache=1)
* **SkyPCC-2.0.1.jar**
(https://www.virustotal.com/gui/f ... dd2b9b75c?nocache=1)
---
### 【实机演示】
- **Bilibili:** [【Minecraft铁路/Folia】当你在游戏里冒进一个红灯:ETCS-2级别 ATP 自动制动干预实机测试](https://www.bilibili.com/video/BV14Sh16sEiW/)
---
### 【致谢 / Acknowledgements / Dankwoord】
感谢 (https://github.com/bergerhealer) 及 (https://github.com/bergerhealer/BKCommonLib)、(https://github.com/bergerhealer/TrainCarts) 的贡献者,为 Minecraft 插件生态与矿车铁路玩法所做的长期工作。
TrainCarts的牌子接口和运行流程为本项目提供了重要参考。
SkyRail Suite是独立项目,不要求安装BKCommonLib或TrainCarts,也不代表二者的官方版本、认可或完整兼容实现;相关TrainCarts 版权与许可声明继续保留。
---
Thank you to (https://github.com/bergerhealer) and the contributors to (https://github.com/bergerhealer/BKCommonLib) and (https://github.com/bergerhealer/TrainCarts) for their long-standing work on Minecraft plugins and minecart railways.
TrainCarts' sign interfaces and operating workflows have been important references for this project.
SkyRail Suite is an independent project: it does not require either plugin, is not an official or endorsed version of either, and does not claim complete compatibility. The applicable TrainCarts copyright and license notice is retained.
---
Met dank aan (https://github.com/bergerhealer) en de bijdragers aan (https://github.com/bergerhealer/BKCommonLib) en (https://github.com/bergerhealer/TrainCarts) voor hun jarenlange werk aan Minecraft-plugins en spoorwegen met mijnkarretjes.
De bordinterfaces en bedieningsprocedures van TrainCarts waren belangrijke referenties voor dit project.
SkyRail Suite is een onafhankelijk project: geen van beide plugins is vereist, het is geen officiële of door hen onderschreven versie en volledige compatibiliteit wordt niet geclaimd. De toepasselijke copyright- en licentievermelding van TrainCarts blijft behouden.
【后记:一列矿车的十六年】
对于一辆诞生在熔炉与工作台上的生铁矿车而言,十六年的时光漫长得像一场没有尽头的梦。
在这十多年的岁月里,它曾是这个沙盒世界里最廉价的消耗品。它在单人世界的泥土铁轨上颠簸过,在红石农场幽暗的漏斗上日夜空转,也在形形色色的服务器里,被各种天马行空的插件拆解、重组——它曾被塞满隐形盔甲架缝合成庞然巨物,也曾被拴绳拉着在逼仄的隧道里盲目摸索。
它见证过无数个背着铁剑的青涩史蒂夫跳上车厢,欢呼着冲向矿洞深处;也目睹过一座座宏伟的交通枢纽在喧嚣中拔地而起,又在某个服务器关服的黄昏里彻底沉寂。
一批批玩家来了又走,少年长成了青年,可它依然只是那个五个铁锭敲出来的代步工具:没有人在意它的惯性,没有人在意它的安全,只要前路有阻碍,它便随时准备被一镐敲碎,化作一地散落的像素点。
它麻木地以为,自己的命运大抵就是如此了。
直到这一天,刺骨的多线程寒风在世界边缘呼啸撕裂,它却被一双沉稳的手郑重地迎进了车库。
那个人没有随手插下一根红石火把,而是带来了厚重得像法典般的工业图纸。
冰冷生硬的生铁底盘被写入了严谨的牛顿动力学方程;横冲直撞的盲目狂奔,被替换成了不差毫厘的移动授权与平滑的制动曲线;在多核线程剧烈震颤的时空边界前,坚固的数据契约化作一道无形的高墙,将它的每一次轮轨交叠、每一次位移积分,紧紧庇护在安全边界之内。
在漫长流浪的十六年后,世界终于第一次平视着它,将一整套现代工业文明的严谨与敬畏,毫无保留地赋予了它。
站台风止,道岔闭锁。远方的调度大屏上,整条进路的绿灯依次点亮。
仪表盘上的动态曲线平滑地延向地平线,通信链路里传来了清晰而坚定的信号报文。
它缓缓切入牵引级位,车轮与钢轨咬合出浑厚而稳健的震颤。
迎来,见证,送走了无数过客之后——
这一次,它不是任何人的玩具。
这一次,它是一列真正的火车。
页: [1]