feat: 智能升级 v2.2.0 - HUD/AutoTorch/AutoEat 智能食物/提前丢垃圾/剔除中立生物
核心改进: - 实时状态 HUD(左上角面板:任务/状态/时长/血量/饥饿/背包/进度) - 自动插火把(黑暗隧道自动防灾,可开关) - 自动进食跳过金苹果/附魔金苹果/紫颂果等特殊食物 - 背包接近满(≥30格)即提前丢垃圾,防误判满包返回 - 杀戮光环排除 Angerable 中立生物(僵尸猪灵/末影人/狼等) - 新增 /autodig status 命令 - GUI 补全设置:自动插火把、进食阈值、保命血量、攻击范围 - 会话统计(时长/死亡次数)联动 HUD 与命令 - 补全 README.md 文档 - 版本升至 2.2.0
这个提交包含在:
@@ -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) {
|
||||
|
||||
在新工单中引用
屏蔽一个用户