雷达实体(Radar)

基本信息

属性 值
实体查询入口 journeymap.client.model.EntityHelper(EntityHelper.java:36)
实体传输对象 journeymap.client.model.EntityDTO
缓存加载器基类 com.google.common.cache.CacheLoader(Guava,非本 mod 的类)
缓存类 4 个雷达缓存 + 1 个自身数据缓存
注册的实体类型 0(JourneyMap 不注册任何 Entity)
权限控制 4 项雷达功能受 Feature 枚举管控(见 功能权限系统)

功能

"雷达"指 JourneyMap 在小地图/全屏地图上叠加的实体标记——把周围的生物、村民、玩家按图标画到地图坐标上。它不注册任何自定义实体,纯粹是读取 Minecraft 原生实体列表并转换成可缓存、可排序的 DTO。

4 类查询

EntityHelper 提供 4 个"取附近实体"方法,全部返回 List<EntityDTO>:

方法 数据源缓存类 说明 源码
getMobsNearby() MobsData 敌对生物 EntityHelper.java:91
getVillagersNearby() VillagersData 村民 :96
getAnimalsNearby() AnimalsData 动物 :101
getPlayersNearby() PlayersData 其它玩家 :131

底层统一入口是 getEntitiesNearby(String timerName, int maxEntities, boolean hostile, Class... entityClasses)(:43),按传入的实体类数组过滤并截断到 maxEntities。

isPassive(EntityLiving)(:106)负责区分敌我——它决定某个生物计入 MobsData 还是 AnimalsData。

缓存类

5 个缓存类全部继承 Guava 的 com.google.common.cache.CacheLoader<Class, Map<String, EntityDTO>>(或单值变体):

缓存类 类型参数 声明 刷新间隔配置项 默认值
MobsData CacheLoader<Class, Map<String, EntityDTO>> MobsData.java:24 cacheMobsData 3000 ms
AnimalsData CacheLoader<Class, Map<String, EntityDTO>> AnimalsData.java:26 cacheAnimalsData 3100 ms
VillagersData CacheLoader<Class, Map<String, EntityDTO>> VillagersData.java:24 cacheVillagersData 2200 ms
PlayersData CacheLoader<Class, Map<String, EntityDTO>> PlayersData.java:24 cachePlayersData 2000 ms
PlayerData CacheLoader<Class, EntityDTO>(单值) PlayerData.java:26 cachePlayerData 1000 ms

后 4 类的缓存值是 Map<String, EntityDTO>(按实体 id 索引),PlayerData 特殊——只存自身一个 EntityDTO,不需要 Map。

同包下还有 AllData.java、DataCache.java、ImagesData.java、MessagesData.java、WorldData.java、WaypointsData.java 等非实体的数据缓存。

排序

EntityHelper 定义 3 个 Comparator 单例(:38-40):

比较器 类型 用途
entityDistanceComparator Comparator<Entity> 按实体到玩家的距离
entityDTODistanceComparator Comparator<EntityDTO> 同上,作用于 DTO
entityMapComparator Comparator<EntityDTO> 私有内部类(:269),用于 id 映射排序

buildEntityIdMap(List<? extends EntityDTO>, boolean sort)(:181)把列表转成 Map<String, EntityDTO>,sort 参数控制是否用 entityMapComparator 排序。

实体图标文件名由 getFileName(Entity)(:209)决定,结合 Constants.ENTITY_ICON_DIR(Constants.java:62)与 entityIconSetName 配置(默认 "2D")。

数值

数值名 值
雷达实体类别 4(敌对生物 / 动物 / 村民 / 玩家)
缓存类总数 5(4 雷达 + 1 自身)
各类默认显示上限 均为 32(maxMobsData / maxAnimalsData / maxPlayersData / maxVillagersData)
各类上限可调范围 1–128
默认刷新间隔 动物 3100 / 敌对生物 3000 / 村民 2200 / 玩家 2000 / 自身 1000 ms
刷新间隔可调范围 1000–10000(自身为 500–2000)
雷达水平半径 默认 64 方块(16–512)
雷达垂直半径 默认 16 方块(8–256)
JourneyMap 注册的实体数 0

交互

触发 行为
小地图 / 全屏地图渲染 按缓存刷新间隔拉取四类附近实体并画图标
潜行(潜行键按下) hideSneakingEntities(默认 true)隐藏实体标记
服务端禁用雷达 收到 RADAR_CODE 后 4 项雷达全部关闭并 DataCache.purge() 清缓存(见 聊天控制码)
调整 maxMobsData 等上限 立即生效(AtomicInteger 热更新)
调整刷新间隔 下一次缓存刷新时生效

相关条目

  • 地图显示选项 - showMobs / showAnimals / showVillagers / showPlayers / showPets / entityIconSetName / entityScale / entityBlur 八个图层开关
  • 核心选项 - 刷新间隔与雷达半径的 9 个选项
  • 功能权限系统 - 4 项 Feature 雷达功能的许可判定
  • 聊天控制码 - 服务端禁用雷达的传输机制