ILocationProvider

数据源接口(坐标 + 显示名)

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.model.locations.ILocationProvider
行数 41
类型 interface(含 3 个 default 方法)
子接口 IWaypointAndLocationProvider

默认 identity = 打包区块坐标

源码注释明写 (ILocationProvider.java:8-10): The default identity is its packed chunk position, so it is appropriate for chunk-grid data and one element per …

default long toLong() { ... }      // :27-30
default int getChunkX() { ... }    // :32-35
default int getChunkZ() { ... }    // :37-40
方法 行 语义
toLong() :27-30 identity 键 = 打包区块位置
getChunkX() :32-35 从 toLong() 解出区块 X
getChunkZ() :37-40 从 toLong() 解出区块 Z

⚠️ 三个 default 方法都基于 toLong() —— 即只要实现 toLong() 就自动获得区块坐标反解, 符合「区块网格、每区块一个元素」的场景。

⚠️ 不符合的场景需覆写 —— 所以才有 addExtraLocation(见 LayerManager 的 :494-498) 支持非区块网格的数据点。 「每区块一个元素」的限制来自这套默认 identity。

抽象方法

源码注释(:8-10)末尾还提到接口需要提供 数据点的坐标与显示信息。消费方实现本接口后, LayerManager 的 generateLocation* 系列 (5 个重载)返回它。

与其它接口的关系

接口 行 关系
本接口 :11 基础数据点
IWaypointAndLocationProvider :11 extends 本接口 + 路点能力

⚠️ 本接口不提供 waypoint 方法 —— 路点能力在 WaypointManager(抽象类)里, 而 IWaypointAndLocationProvider 把两者桥接起来。

在缓存链中的角色

ILocationProvider.toLong()          ← identity
    ↓
LayerRenderer.dimCachedRenderSteps  ← 维度 → Long → RenderStep
    ↓
LayerManager.getCurrentDimCache()   ← Long2ObjectMap

见 LayerRenderer 与 LayerManager 的缓存字段。

相关