diff --git a/src/main/java/autostore/client/config/ConfigStore.java b/src/main/java/autostore/client/config/ConfigStore.java index 441f557..0d0ff96 100644 --- a/src/main/java/autostore/client/config/ConfigStore.java +++ b/src/main/java/autostore/client/config/ConfigStore.java @@ -45,10 +45,10 @@ public final class ConfigStore { if (loaded == null) { return new ExpansionConfig(); } - // 以下字段为固定默认值,防止旧配置文件中的异常值影响运行 + // autoEat/eatThreshold 字段为固定默认值,防止旧配置文件中的异常值影响运行; + // 注意:maxRings 由 /autostore rings 命令持久化,不得在此覆盖,否则命令设置会在重启后失效 loaded.autoEat = true; loaded.eatThreshold = 14; - loaded.maxRings = 0; return loaded; } catch (Exception e) { // 解析失败时回退到默认配置 diff --git a/src/main/java/autostore/client/controller/ExpansionController.java b/src/main/java/autostore/client/controller/ExpansionController.java index 8897be5..78edec8 100644 --- a/src/main/java/autostore/client/controller/ExpansionController.java +++ b/src/main/java/autostore/client/controller/ExpansionController.java @@ -302,35 +302,36 @@ implements SubtitleChatMonitor.Listener, BaritoneBridge.PathListener { this.tickSideStep(); return; } - switch (this.state.ordinal()) { - case 1: { + switch (this.state) { + case PLANNING: { this.plan(); break; } - case 2: { + case PATHING: { this.tickPathing(); break; } - case 3: { + case WAITING: { this.tickWaiting(); break; } - case 4: { + case SUCCESS: { this.tickSuccess(); break; } - case 5: { + case FAIL: { this.tickFail(); break; } - case 6: { + case NEXT: { this.tickNext(); break; } - case 7: { + case RETURNING: { this.tickReturning(); break; } + // IDLE / COMPLETE / STOPPED 无需每帧驱动 } } diff --git a/src/main/java/autostore/client/planner/ExpansionPlanner.java b/src/main/java/autostore/client/planner/ExpansionPlanner.java index c9d3c5c..297b193 100644 --- a/src/main/java/autostore/client/planner/ExpansionPlanner.java +++ b/src/main/java/autostore/client/planner/ExpansionPlanner.java @@ -20,11 +20,12 @@ import net.fabricmc.api.Environment; /** * 扩地规划器:根据当前邦国领土、配置与玩家位置,计算下一步要占领的区块列表。 * - *
支持三种扩地策略: + *
支持四种扩地策略: *
收集所有与己方领土相邻的合法区块,以玩家当前位置为中心, + * 按与玩家的曼哈顿距离由近到远排序(距离相同者优先邻居数多、形状更紧实的), + * 围绕玩家一圈圈向外铺开,而非沿固定方向直线推进。
+ */ + private List从玩家当前位置出发,沿一个方向连续向外延伸占领区块(形成一条"线")。 * 每步从候选集中挑选评分最优的区块:距离越近、越贴合当前方向、邻居越多、形状越规整越好。 @@ -456,7 +484,7 @@ public final class ExpansionPlanner { return chunk.x() >= config.regionMinX && chunk.x() <= config.regionMaxX && chunk.z() >= config.regionMinZ && chunk.z() <= config.regionMaxZ; } - // 回退到圆形区域(中心+半径) + // 回退到以中心+半径限定的正方形区域(切比雪夫距离,与"圈数"距离定义一致) int dx = Math.abs(chunk.x() - config.regionCenterX); return Math.max(dx, dz = Math.abs(chunk.z() - config.regionCenterZ)) <= Math.max(1, config.regionRadius); }