ESP 检测范围 espRange
基本信息
| 属性 | 值 |
|---|---|
| 配置键名 | espRange |
| Forge 分类常量 | Configuration.CATEGORY_GENERAL(Config.java:31) |
| 类型 | Integer(Configuration.getInt) |
| 默认值 | 16(Config.java:15) |
| 允许范围 | 1 – 256(Config.java:33-34) |
| 声明说明 | ESP detection range in blocks(Config.java:35) |
| 单位 | 方块(整数半径) |
功能
preInit 阶段读入 Config.espRange(Config.java:29-36)。这是本模组三个配置项中唯一真正影响游戏行为的一个。
ESPRenderer.rescanIfNeeded() 每帧读取该值作为扫描半径(ESPRenderer.java:69),并把它和玩家所在整数格坐标一起作为扫描缓存的失效条件(ESPRenderer.java:71-73):玩家移动到新的整数格,或配置范围发生变化,都会触发清空缓存并重新扫描(ESPRenderer.java:75-88)。
扫描形状是以玩家为球心的实心球而非立方体:三重循环遍历 [-range, range] 的三个轴(ESPRenderer.java:77-79),再用 dx² + dy² + dz² > r² 剔除球外方块(ESPRenderer.java:76, 80),其中 r2 = (long) range * range(ESPRenderer.java:76)。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 默认半径 | 16 | Config.java:15 |
| 最小值 | 1 | Config.java:33 |
| 最大值 | 256 | Config.java:34 |
| 扫描形状 | 球体(dx²+dy²+dz² ≤ r²) |
ESPRenderer.java:80 |
| 单次扫描最大方块数 | 约 (4/3)π·r³;r=16 时约 17 157 |
由 ESPRenderer.java:77-79 的三重循环与 ESPRenderer.java:80 的球形判据推得 |
交互
| 触发 | 行为 |
|---|---|
| 模组 preInit | 读入 Config.espRange,超出 1–256 的值被 Forge 钳制,配置变化时保存 |
| 每帧(ESP 开启且玩家/世界非空) | 按当前半径做球形扫描(ESPRenderer.java:103) |
| 玩家跨入新的整数格 | 缓存失效,下一帧全量重扫(ESPRenderer.java:71-73) |
| 改配置后重进游戏 | 新半径参与缓存键比较,触发重扫(ESPRenderer.java:72) |
性能影响
半径直接决定重扫成本:r=16 时单次重扫约访问 1.7 万个方块;r=256 时约 7 亿个方块。缓存保证只在玩家跨格或改配置时才付出该代价,而非每帧。
需要区分的是:扫描受本项控制,绘制受硬编码的 FRAME_BUDGET = 500 限制(ESPRenderer.java:32,用法见 ESPRenderer.java:140),二者互不联动。
相关条目
- 矿石与刷怪笼高亮 ESP - 本配置项的唯一消费方
- ESP 默认开关 - 同一配置文件中的对照项