feat: 重构挖矿模式为主世界/下界,新增装备耐久保护与自定义矿物

- MineTask: DIAMOND->OVERWORLD, ANCIENT_DEBRIS->NETHER, 移除钻石/远古残骸硬编码
- DigConfig: 新增主世界/下界可选矿物列表、护甲/工具耐久保护阈值、下界返程血量阈值、目标数量
- AutoDigCommands: 支持 overworld/nether/none 任务名
- OverworldMiner: 重命名自 FishboneMiner, 支持配置矿物列表
- NetherMiner: 重命名自 DebrisHandler, 支持配置矿物、血量/耐久/背包满自动返程
- DigController: 新增 GEAR_PROTECTION 状态, 装备耐久过低暂停挖矿/触发下界返程
- AutoDigGui: 更新任务按钮、矿物预设循环、装备耐久/返程阈值设置
- ConfigStore: 扩展 sanitize 校验新字段
- 版本升级: 1.0.0 -> 2.0.0
这个提交包含在:
lyizai
2026-08-29 13:23:43 +08:00
父节点 95c4e97db0
当前提交 4c081afe06
共修改 17 个文件,包含 864 行新增和 299 行删除
@@ -4,6 +4,7 @@ import autodig.client.bridge.BaritoneBridge;
import autodig.client.command.AutoDigCommands;
import autodig.client.config.ConfigStore;
import autodig.client.config.DigConfig;
import autodig.client.config.MineTask;
import autodig.client.controller.DigController;
import autodig.client.gui.AutoDigGui;
import com.mojang.brigadier.CommandDispatcher;
@@ -35,6 +36,8 @@ public final class AutoDigModClient implements ClientModInitializer {
private DigConfig config;
private boolean openGuiRequested;
private KeyBinding guiKey;
/** 上一次同步的任务,用于检测 controller 内部改动(如任务完成)并落盘 */
private MineTask lastTask;
private static final int KEY_R = 82;
private static final int KEY_LEFT_CTRL = 341;
@@ -44,15 +47,23 @@ public final class AutoDigModClient implements ClientModInitializer {
public void onInitializeClient() {
instance = this;
this.config = this.configStore.load();
this.lastTask = this.config.task;
this.guiKey = KeyBindingHelper.registerKeyBinding(new KeyBinding(
"key.autodig.open", KEY_R, "category.autodig"));
ClientTickEvents.END_CLIENT_TICK.register(client -> {
// 同步模组配置到 Baritone(工具切换 / 避岩浆 / 避怪/保命)
this.bridge().applyConfig(this.config);
this.controller.tick(this.config);
// controller 可能因任务完成而把 task 置空,这里落盘,避免下次进游戏自动挖矿
if (this.config.task != this.lastTask) {
this.lastTask = this.config.task;
this.saveConfig();
}
while (this.guiKey.wasPressed()) {
if (this.isCtrlDown(client)) {
this.openGui();
} else {
this.sendToast("AutoDig: 请按住 Ctrl 再按此快捷键打开界面");
}
}
if (this.openGuiRequested) {