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 |
单个数据点 | 消费方 |
相关
- LayerManager - 事件的主要接收方
- ILocationProvider - 被失效的数据点
- NavigatorApi -
forceRefresh的调用方