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),二者互不联动。

相关条目