# AutoRail — 自动铺铁轨(Fabric 1.21.4 + Baritone API) 面向方向自动铺设铁轨的 Minecraft 客户端模组。不依赖 Baritone 寻路来规划轨道—— 它只借 Baritone 的行走能力做“点到点建造”,保证铁轨能铺过悬崖边等寻路会回避的地形。 ## 使用 1. 安装 [Fabric Loader ≥0.16.9](https://fabricmc.net/use/) 与 [Fabric API](https://modrinth.com/mod/fabric-api),以及 Baritone(1.13.1,兼容 1.21.4 的版本)。 2. 把 `autorail-.jar` 放进 `mods/`。 3. 进游戏后按 **R** 开启/关闭。背包里要有**铁轨**(垫脚石需要时还要有**圆石**)。 4. 按住/调整视角方向→玩家会边走边往正前方铺直轨;手动转 90° 即可转弯(只铺直轨)。 5. 前方被阻挡、找不到地面、铁轨耗尽时自动停止并提示。 ## 行为逻辑 - **取朝向**:读取玩家水平朝向(Yaw),计算正前方 2 格处的地面。 - **放置**:切换热键栏到铁轨并同步 `UpdateSelectedSlotC2S`,随后通过 `ClientPlayerInteractionManager`(Baritone 的 `IPlayerController`)发送右键放置—— **全程合法交互,绝不 `world.setBlockState`**,多人服务器才会承认。 - **移动**:放置后设 `GoalBlock` 让玩家走到目标点,循环往复。 - **节奏**:每次动作间隔 5 tick(250ms),处于多人服务器建议的 200~300ms 区间。 - **垫脚石**:目标列下方悬空/落差超过 2 格时,先拿圆石右键垫补,再接铺铁轨(可选逻辑,已实现)。 - **铁轨朝向**:交给原版自动衔接(直轨)。转弯靠玩家手动转视角,开发量减半。 ## 开发 ```bash gradlew build # 产物在 build/libs/autorall-.jar ``` - `src/main/java/com/autorall/AutoRailClient.java` — 入口:按键绑定、进程注册 - `src/main/java/com/autorall/process/RailProcess.java` — 铺轨主逻辑(`IBaritoneProcess`) - Baritone API 依赖:`libs/baritone-api-fabric-1.13.1.jar`(本地 `modImplementation`,Loom 自动重映射) ## 已知限制 - 只铺普通铁轨(`minecraft:rail`),不支持动力铁轨/探测铁轨。 - 只铺直轨;曲线由原版在相邻铁轨存在时自动形成,手动转弯请让两段直线夹角足够清晰。 - `isSolidBlock` 等判定基于客户端世界状态;服务器延误时可能出现个别放置失败,会自动重试。