文件
AutoRail/README.md
T

3.2 KiB
原始文件 Blame 文件历史

AutoRail — 自动铺铁轨(Fabric 1.21.4,内置寻路)

按住 R+T 打开菜单,输入起始点、目标点和必经的途径点,模组用内置 A* 寻路 规划一条可铺轨的路线,然后控制玩家边走边铺,直到目标点。不依赖 Baritone,寻路与行走全部内置。

使用

  1. 安装 Fabric Loader ≥0.16.9 与 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 一次;放置前自动看向目标方块;上坡自动跳跃;卡住自动检测并停止报错。
  • 行走只用客户端输入(前进/跳跃键 + 平滑转向),路径按“已铺设节点”推进,不会踩空。

代码结构

com.autorail
├─ AutoRailClient          # 入口:R+T 组合键 + 每 tick 驱动服务
├─ gui/AutoRailScreen      # 菜单:起点/终点/途径点输入与状态显示
├─ service/AutoRailService # 状态机:PLANNING → LAYING → DONE/FAILED
├─ service/RailExecutor    # 执行器:行走控制 + 合法放置铁轨/圆石
└─ pathing/                # 内置寻路:RailPathfinder(A*)、RailStep、CoordParser

开发

gradlew build          # 产物在 build/libs/autorail-<version>.jar

已知限制

  • 只铺普通铁轨(minecraft:rail),不铺动力铁轨/探测铁轨。
  • 不破坏、不放置除铁轨/圆石外的方块:遇到障碍会绕路而不是挖穿。
  • 起始点必须在玩家附近(水平 6 格、垂直 8 格以内)——本模组不含到远处的自由行走导航。
  • 遇水会垫圆石架桥,但岩浆列直接视为不可通行。
  • 基于客户端世界状态判定;服务器延迟时个别放置会失败,会自动重试。