feat: 智能升级 v2.2.0 - HUD/AutoTorch/AutoEat 智能食物/提前丢垃圾/剔除中立生物

核心改进:
- 实时状态 HUD(左上角面板:任务/状态/时长/血量/饥饿/背包/进度)
- 自动插火把(黑暗隧道自动防灾,可开关)
- 自动进食跳过金苹果/附魔金苹果/紫颂果等特殊食物
- 背包接近满(≥30格)即提前丢垃圾,防误判满包返回
- 杀戮光环排除 Angerable 中立生物(僵尸猪灵/末影人/狼等)
- 新增 /autodig status 命令
- GUI 补全设置:自动插火把、进食阈值、保命血量、攻击范围
- 会话统计(时长/死亡次数)联动 HUD 与命令
- 补全 README.md 文档
- 版本升至 2.2.0
这个提交包含在:
lyizai
2026-08-30 22:36:35 +08:00
父节点 a297d2714d
当前提交 4135cdd117
共修改 15 个文件,包含 492 行新增和 28 行删除
@@ -7,9 +7,11 @@ import autodig.client.miner.NetherMiner;
import autodig.client.miner.OverworldMiner;
import autodig.client.service.AutoEat;
import autodig.client.service.AutoGear;
import autodig.client.service.AutoTorch;
import autodig.client.service.AutoTrash;
import autodig.client.service.DeathRecorder;
import autodig.client.service.KillAura;
import autodig.client.service.SessionStats;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
@@ -34,7 +36,9 @@ public final class DigController {
private final KillAura killAura = new KillAura();
private final AutoGear autoGear = new AutoGear();
private final AutoTrash autoTrash = new AutoTrash();
private final AutoTorch autoTorch = new AutoTorch();
private final DeathRecorder deathRecorder = new DeathRecorder();
private final SessionStats stats = new SessionStats();
private final OverworldMiner overworld = new OverworldMiner(this.bridge);
private final NetherMiner nether = new NetherMiner(this.bridge);
@@ -56,15 +60,20 @@ public final class DigController {
}
PlayerEntity player = client.player;
// 常驻能力:杀戮光环、自动进食、背包满丢垃圾、换装冷却
// 常驻能力:杀戮光环、自动进食、背包满丢垃圾、自动火把、换装冷却
this.killAura.tick(config);
this.autoEat.tick(config);
this.autoTrash.tick(config);
this.autoTorch.tick(config);
this.autoGear.tick();
// 死亡处理:死亡瞬间暂停任务,重生后按需回到死亡坐标
// 死亡处理:记录死亡次数,暂停任务,重生后按需回到死亡坐标
boolean wasDead = player.isDead();
this.deathRecorder.tick(config, this::onRespawn);
if (player.isDead()) {
if (!wasDead) {
this.stats.addDeath(); // 刚死亡,计一次
}
this.bridge.cancelAll();
return;
}
@@ -108,6 +117,7 @@ public final class DigController {
if (config.task == MineTask.NONE) {
if (this.state != State.IDLE) {
this.bridge.cancelAll();
this.stats.stop();
this.setState(State.IDLE, "任务已停止,进入空闲状态");
}
return;
@@ -135,10 +145,12 @@ public final class DigController {
break;
}
if (config.task == MineTask.OVERWORLD) {
this.stats.start();
this.overworld.init(config);
this.setState(State.OVERWORLD,
"开始主世界鱼骨挖矿(Y=" + config.overworldLevel + ",巷道 " + config.tunnelLength + " 格)");
} else if (config.task == MineTask.NETHER) {
this.stats.start();
this.nether.reset();
this.setState(State.NETHER, "开始下界挖矿(目标 " + config.netherTargetCount + " 个)");
}
@@ -250,6 +262,7 @@ public final class DigController {
private void finish(DigConfig config, String message) {
this.bridge.cancelAll();
config.task = MineTask.NONE;
this.stats.stop();
this.setState(State.IDLE, message);
}
@@ -368,6 +381,26 @@ public final class DigController {
return this.bridge;
}
/** @return 会话统计(供 HUD/GUI 展示)。 */
public SessionStats stats() {
return this.stats;
}
/** @return 主世界鱼骨巷道当前推进到的步数(HUD 进度显示用)。 */
public int overworldStep() {
return this.overworld.currentStep();
}
/** @return 主世界鱼骨巷道总步数(HUD 进度显示用)。 */
public int overworldTotal() {
return this.overworld.totalSteps();
}
/** @return 下界模式本次新挖到的目标矿物数量(HUD 进度显示用)。 */
public int netherMinedCount() {
return this.nether.getMinedCount();
}
/** 供 GUI/调试获取当前状态文本(中文描述)。 */
public String statusText() {
return switch (this.state) {