文件
AutoRail/README.md
T
lyizai 0347396365 feat: Fabric 1.21.4 + Baritone 自动铺轨 mod 完整实现
- RailProcess: 点到点铺轨(Yaw 取向前方 2 格、合法右键放置、GoalBlock 行走循环)
- 节奏 5 tick(250ms) 适配多人服务器、热键栏切换与 UpdateSelectedSlot 同步
- 悬空自动用圆石垫脚石搭桥、calcFailed 卡死兜底
- 修复 1.21.4 sendMessage 签名编译错误、Gradle 守护进程钉到 JDK 21
- 新增 README 与 .gitignore
2026-08-27 14:10:10 +08:00

39 行
2.4 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# 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-<version>.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-<version>.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` 等判定基于客户端世界状态;服务器延误时可能出现个别放置失败,会自动重试。