feat: 沿线巡检+步行受阻换道续铺+水面悬崖自动搭桥
这个提交包含在:
@@ -15,7 +15,8 @@
|
||||
(全程菜单/聊天栏显示进度,不卡游戏)。
|
||||
5. 快捷栏需要**铁轨**;启用电气化后还需要**动力铁轨**(和按规则插的**红石火把**/**探测铁轨**);
|
||||
遇到悬空/水面会自动用**圆石**垫脚,没有则按预案处理。
|
||||
6. 铺轨过程中不要打开聊天/背包等界面(行走会暂停);再按 R+T 可查看进度或点“停止”。
|
||||
6. 铺完可点 **“沿线巡检”**:沿路走回逐格检查断轨/顶部受堵/支撑流失,问题坐标逐条播报。
|
||||
7. 铺轨过程中不要打开聊天/背包等界面(行走会暂停);再按 R+T 可查看进度或点“停止”。
|
||||
|
||||
## 放置规则(电气化)
|
||||
|
||||
@@ -40,11 +41,31 @@
|
||||
- **材料不足预案**:铁轨/圆石/火把缺货时按“等待/跳过”预案执行,不会卡死也不会铺出断头路。
|
||||
- **卡住自救**:行走受阻先跳跃脱困,持续卡住才报错停止;放置失败自动重试。
|
||||
|
||||
## 全程不弃单(换道续铺 + 自动搭桥)
|
||||
|
||||
- **换道续铺**:步行到起点途中被卡住/缺圆石/路线不通时,**不报错放弃**——
|
||||
自动放弃步行路线,从玩家当前位置重新规划线路,直接铺到目标。
|
||||
- **自动搭桥**:步行寻路允许“悬空格”(水面之上、悬崖边缘),先垫圆石成型再踩上去;
|
||||
搭桥代价高于绕路,能绕就绕、绕不过才搭。岩浆上不搭桥。
|
||||
|
||||
## 沿线巡检
|
||||
|
||||
铺轨完成后点 **“沿线巡检”**,玩家沿已铺线路走回一圈,逐格检查:
|
||||
|
||||
| 问题 | 含义 |
|
||||
| --- | --- |
|
||||
| 断轨 | 该格没有铁轨(被破坏/未铺上) |
|
||||
| 上方被堵 | 头顶两格被实体方块占用,矿车/玩家过不去 |
|
||||
| 支撑流失 | 铁轨下方支撑消失(悬空/泡水),可能脱落 |
|
||||
| 无法到达 | 巡检者被地形卡住,跳过该格继续检查后续线路 |
|
||||
|
||||
结果在聊天栏汇总播报(问题坐标 + 类型,最多显示 8 条),状态栏实时显示进度与问题数。
|
||||
|
||||
## 内置寻路(A*)
|
||||
|
||||
- **铁轨寻路**:4 向移动、±1 格坡度、禁止掉头、“转弯+坡度”同格禁止(原版没有斜弯轨);
|
||||
每节点校验头顶两格可通行、下方支撑可垫补,避开水面/岩浆;转弯加价、复用既有铁轨打折。
|
||||
- **步行寻路**(去远处起点):4 向 + 跳 1 格 + 落 3 格 + 可涉水,走不到会明确报错。
|
||||
- **步行寻路**(去远处起点):4 向 + 跳 1 格 + 落 3 格 + 可涉水 + 悬空格可搭桥(垫圆石)。
|
||||
- 分片执行(每 tick 限额展开),不卡客户端线程。
|
||||
|
||||
## 铺设(合法交互)
|
||||
@@ -57,15 +78,16 @@
|
||||
```text
|
||||
com.autorail
|
||||
├─ AutoRailClient # 入口:R+T 组合键 + 每 tick 驱动服务
|
||||
├─ gui/AutoRailScreen # 主菜单:起点/终点/途径点 + 设置入口
|
||||
├─ gui/AutoRailScreen # 主菜单:起点/终点/途径点 + 巡检/设置入口
|
||||
├─ gui/AutoRailSettingsScreen # 设置:放置规则 / 预案 / 安全阈值
|
||||
├─ config/AutoRailConfig # Gson 持久化配置(config/autorail.json)
|
||||
├─ service/AutoRailService # 状态机:PLANNING → WALKING → LAYING → DONE/FAILED
|
||||
├─ service/AutoRailService # 状态机:PLANNING → WALKING → LAYING → PATROLLING → DONE/FAILED
|
||||
├─ service/RailExecutor # 执行器:行走控制 + 合法放置铁轨/圆石/火把
|
||||
├─ service/WalkExecutor # 步行执行器:把玩家带到远处起点
|
||||
├─ service/WalkExecutor # 步行执行器:走到远处起点(含垫圆石搭桥)
|
||||
├─ service/PatrolExecutor # 巡检执行器:沿线逐格检查断轨/堵顶/支撑流失
|
||||
├─ service/AutonomyController # 自主行为:自动进食 / 低血量避险
|
||||
├─ service/RailPlan # 把间隔规则展开成逐节点放置计划
|
||||
└─ pathing/ # 内置寻路:RailPathfinder、WalkPathfinder、RailStep、CoordParser
|
||||
└─ pathing/ # 内置寻路:RailPathfinder、WalkPathfinder、RailStep、WalkCell、CoordParser
|
||||
```
|
||||
|
||||
## 开发
|
||||
@@ -76,9 +98,11 @@ gradlew build # 产物在 build/libs/autorail-<version>.jar
|
||||
|
||||
## 已知限制
|
||||
|
||||
- 复用既有铁轨不校验类型:老线路上的普通铁轨不会自动升级为动力铁轨。
|
||||
- 复用既有铁轨不校验类型:老线路上的普通铁轨不会自动升级为动力铁轨(巡检会标出问题格)。
|
||||
- 巡检只报告不修复:发现断轨后可对同线路再跑一次铺轨,复用折扣会让模组优先补齐缺口。
|
||||
- 不破坏、不放置除铁轨/圆石/红石火把外的方块:遇到障碍会绕路而不是挖穿。
|
||||
- 遇水会垫圆石架桥,岩浆列视为不可通行。
|
||||
- 遇水会垫圆石架桥,岩浆列视为不可通行;步行搭桥同理(岩浆上不搭桥)。
|
||||
- 红石火把在支撑方块侧面放置;若点位被后续地形占用,该处动力轨无供电(线路仍连通)。
|
||||
- 自动进食吃的是快捷栏里的食物;食物全靠自带,模组不会杀生取食。
|
||||
- 换道续铺要求目标点仍在寻路范围内(检查点包围盒外扩 48 格);超远距离请加途径点分段。
|
||||
- 基于客户端世界状态判定;服务器延迟时个别放置会失败,会自动重试。
|
||||
|
||||
在新工单中引用
屏蔽一个用户