/* * 本文件由 autostore-1.0-SNAPSHOT.jar 反编译并整理而来(CFR 0.152), * 混淆名已替换为 Minecraft 1.21.4 Yarn 可读映射,并补充中文注释。 */ package autostore.client.config; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; /** * 自动扩地配置数据类。 * *
保存了扩地策略、目标数量、超时重试、区域限制以及 Baritone 寻路行为等全部可配置项, * 通过 {@link ConfigStore} 持久化为 JSON 文件。
*/ @Environment(EnvType.CLIENT) public class ExpansionConfig { /** 扩地策略:1=方形外扩,2=区域扩地,3=玩家周围,4=绕国一圈 */ public int strategy = 1; /** 目标邦国名称;为空时表示自动识别玩家当前所在邦国 */ public String stateName = ""; /** 目标扩地数量;-1 表示持续扩地直到无可用区块 */ public int targetCount = -1; /** 等待/寻路超时时间(秒) */ public int waitTimeoutSeconds = 60; /** 超时后的最大重试次数 */ public int retries = 2; /** 连续寻路超时累计达到该秒数后,发送 /u return 回城传送并重新开始(默认 60 秒) */ public int returnThresholdSeconds = 60; /** 发送 /u return 后等待传送完成的时间(秒);默认 12 秒,覆盖 10 秒传送延迟并留余量 */ public int returnWaitSeconds = 12; /** 单个目标最多触发"往边上走两步"自救的轮数;每轮走两步后仍超时再重试,多轮无效后才回城/切换目标(默认 3) */ public int sideStepMaxRounds = 3; /** 区域扩地策略的中心 X 坐标(区块) */ public int regionCenterX; /** 区域扩地策略的中心 Z 坐标(区块) */ public int regionCenterZ; /** 区域扩地策略的半径(区块) */ public int regionRadius = 5; /** 区域扩地策略的矩形边界(区块坐标);minX > maxX 表示未圈选,使用中心+半径 */ public int regionMinX = 0; /** 区域扩地策略的矩形边界(区块坐标);未圈选时为 -1 */ public int regionMaxX = -1; /** 区域扩地策略的矩形边界(区块坐标);minZ > maxZ 表示未圈选,使用中心+半径 */ public int regionMinZ = 0; /** 区域扩地策略的矩形边界(区块坐标);未圈选时为 -1 */ public int regionMaxZ = -1; /** 是否允许 Baritone 疾跑 */ public boolean allowSprint = true; /** 是否允许 Baritone 游泳 */ public boolean allowSwim = true; /** 是否允许 Baritone 跳跃 */ public boolean allowJump = true; /** 是否允许 Baritone 破坏方块 */ public boolean allowBreak; /** 是否允许 Baritone 放置方块 */ public boolean allowPlace; /** 寻路高度偏好:true 时寻路优先往高处走(y 越大启发成本越低/优先级越高,y 越小施惩罚) */ public boolean altitudePreference = true; /** 高度偏好权重:每上升 1 格折算的启发成本减少量(越大越明显偏向高处,默认 0.1) */ public double altitudeWeight = 0.1; /** 是否启用避开怪物 */ public boolean avoidMobs = true; /** 是否启用自动进食(饥饿时自动吃背包食物) */ public boolean autoEat = true; /** 触发自动进食的饥饿值阈值(0-20) */ public int eatThreshold = 14; /** 扩圈上限(0 表示不限制) */ public int maxRings; /** 地图自动刷新间隔(秒),最小 10 秒 */ public int refreshIntervalSeconds = 30; /** * 深拷贝当前配置,返回一个独立的副本。 * * @return 与当前配置完全相同的副本 */ public ExpansionConfig copy() { ExpansionConfig c = new ExpansionConfig(); c.strategy = this.strategy; c.stateName = this.stateName; c.targetCount = this.targetCount; c.waitTimeoutSeconds = this.waitTimeoutSeconds; c.retries = this.retries; c.returnThresholdSeconds = this.returnThresholdSeconds; c.returnWaitSeconds = this.returnWaitSeconds; c.sideStepMaxRounds = this.sideStepMaxRounds; c.regionCenterX = this.regionCenterX; c.regionCenterZ = this.regionCenterZ; c.regionRadius = this.regionRadius; c.regionMinX = this.regionMinX; c.regionMaxX = this.regionMaxX; c.regionMinZ = this.regionMinZ; c.regionMaxZ = this.regionMaxZ; c.allowSprint = this.allowSprint; c.allowSwim = this.allowSwim; c.allowJump = this.allowJump; c.allowBreak = this.allowBreak; c.allowPlace = this.allowPlace; c.altitudePreference = this.altitudePreference; c.altitudeWeight = this.altitudeWeight; c.avoidMobs = this.avoidMobs; c.autoEat = this.autoEat; c.eatThreshold = this.eatThreshold; c.maxRings = this.maxRings; c.refreshIntervalSeconds = this.refreshIntervalSeconds; return c; } }