文件
AutoRail/README.md
T

53 行
3.2 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# AutoRail — 自动铺铁轨(Fabric 1.21.4,内置寻路)
按住 **R+T** 打开菜单,输入**起始点**、**目标点**和必经的**途径点**,模组用内置 A* 寻路
规划一条可铺轨的路线,然后控制玩家边走边铺,直到目标点。**不依赖 Baritone**,寻路与行走全部内置。
## 使用
1. 安装 [Fabric Loader ≥0.16.9](https://fabricmc.net/use/) 与 [Fabric API](https://modrinth.com/mod/fabric-api),把 `autorail-<version>.jar` 放进 `mods/`。
2. 进世界后按住 **R+T** 打开菜单(先按 T 弹出聊天栏也会被菜单替换掉,正常现象)。
3. 起始点留空 = 当前坐标;目标点必填;途径点可添加多个(按顺序经过)。
坐标格式支持:`100 64 -200`(x y z)、`100 -200`(x z,自动找地面)、`~`、`~ 10 ~`、`~-5` 等相对写法。
4. 点“开始铺轨”:先分片寻路(菜单/聊天栏显示进度,不卡游戏),完成后自动开始铺设(菜单自动关闭)。
5. 快捷栏需要**铁轨**;遇到悬空/水面会自动用**圆石**垫脚,没有则提示并停止。
6. 铺轨过程中不要打开聊天/背包等界面(行走会暂停);再按 R+T 可查看进度或点“停止”。
## 内置寻路(A*)
- 专为铁轨设计:4 向移动、允许 ±1 格坡度、禁止掉头、禁止“转弯+坡度”同格(原版没有斜弯轨)。
- 每个节点校验:上方两格可通行(玩家沿线行走)、下方有实心支撑或可用圆石垫补、避开水面/岩浆。
- 转弯有额外代价(尽量走直线);已有铁轨可复用且有折扣,优先延伸既有线路。
- 分片执行(每 tick 限额展开 4096 节点);搜索范围限制在检查点包围盒外扩 48 格,总展开上限 40 万节点。
## 铺设(合法交互)
- 切换快捷栏 + `processRightClickBlock` 右键放置,**全程合法交互,绝不 `world.setBlockState`**,多人服务器可信任。
- 放置节奏 200ms 一次;放置前自动看向目标方块;上坡自动跳跃;卡住自动检测并停止报错。
- 行走只用客户端输入(前进/跳跃键 + 平滑转向),路径按“已铺设节点”推进,不会踩空。
## 代码结构
```text
com.autorail
├─ AutoRailClient # 入口:R+T 组合键 + 每 tick 驱动服务
├─ gui/AutoRailScreen # 菜单:起点/终点/途径点输入与状态显示
├─ service/AutoRailService # 状态机:PLANNING → LAYING → DONE/FAILED
├─ service/RailExecutor # 执行器:行走控制 + 合法放置铁轨/圆石
└─ pathing/ # 内置寻路:RailPathfinder(A*)、RailStep、CoordParser
```
## 开发
```bash
gradlew build # 产物在 build/libs/autorail-<version>.jar
```
## 已知限制
- 只铺普通铁轨(`minecraft:rail`),不铺动力铁轨/探测铁轨。
- 不破坏、不放置除铁轨/圆石外的方块:遇到障碍会绕路而不是挖穿。
- 起始点必须在玩家附近(水平 6 格、垂直 8 格以内)——本模组不含到远处的自由行走导航。
- 遇水会垫圆石架桥,但岩浆列直接视为不可通行。
- 基于客户端世界状态判定;服务器延迟时个别放置会失败,会自动重试。