LayerRefreshEvent

图层刷新事件

基本信息

属性 值
路径 com.gtnewhorizons.navigator.api.event.LayerRefreshEvent
行数 25
包 api/event(全 mod 唯一的 event 包)

事件的用途

让图层在数据变化后广播「我需要刷新」, 使 LayerManager 的缓存失效重算。

对应 LayerManager 的三个失效方法:

方法 行 粒度
invalidateLocation(ILocationProvider) :407-419 单个数据点
invalidateLocation(long location) :421-424 裸坐标
invalidateLocation(int dimension, long location) :436-439 维度 + 裸坐标
removeLocation(ILocationProvider) :461-463 单点移除(vs 失效)
removeLocation(int dimension, int chunkX, int chunkZ) :485-488 整区块移除

⚠️ 25 行说明本事件不带载荷字段 (或只有一个简单的引用字段)—— 细节在 LayerManager 的 invalidate* 实现里, 见该条目。

分派方式

⚠️ 本 mod 不用 FML 事件总线做图层通信 —— 它用 GTNHLib 的 EventBus(见 ClientProxy 用的 com.gtnewhorizon.gtnhlib.eventbus.EventBusSubscriber)与 直接方法调用。

LayerRefreshEvent 是 api/event 包下的公开 API 类型, 供消费方触发。

与 forceRefresh 的区别

机制 粒度 触发者
NavigatorApi.registerLayerManager 里的 forceRefresh() 整个图层 注册时自动
LayerManager.forceRefresh(:215) 整个图层 手动
LayerRefreshEvent / invalidateLocation 单个数据点 消费方

相关