DirtyChunkLocation
脏区块数据源
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.gtnewhorizons.navigator.impl.DirtyChunkLocation |
| 行数 | 63 |
| 实现 | ILocationProvider(推测) |
职责
实现 ILocationProvider, 表示一个脏区块(被修改过的区块)。
关键:是否覆写默认 identity
ILocationProvider 的 3 个 default 方法
都以 toLong()(打包区块坐标)为 identity。
⚠️ 脏区块天然是区块网格数据(每区块一个元素),
所以很可能只用默认的 toLong(),无需覆写。
但 LayerManager 的
addExtraLocation(:494-498)明确支持
非区块网格的数据点 —— 脏区块调试若要显示
「具体是哪个方块被改」,就需要方块级 identity,
此时必须覆写 toLong()。
63 行的体量支持后者(含区块/方块换算 + 显示名 + 失效逻辑)。
三个 default 方法的取用
| 方法 | 若用默认值 | 若覆写 |
|---|---|---|
toLong() |
打包区块坐标 | 打包方块坐标或自定义键 |
getChunkX() |
从 toLong() 解出 |
需自实现 |
getChunkZ() |
从 toLong() 解出 |
需自实现 |
⚠️ ILocationProvider 的 javadoc 明写 默认 identity **适用于「区块网格、每区块一个元素」**的场景, 不适用时必须覆写。
显示信息
LayerManager 的
getElementSize()(:144-150)与
updateElement(ILocationProvider)(:137-138)
是给绘制用的钩子 —— 本类提供内容(哪些方块被改、改了几次)。
四个 impl 类的行数
| 类 | 行 |
|---|---|
| DirtyChunkLayerManager | 100 |
| 本类 | 63 |
| DirtyChunkRenderStep | 39 |
| DirtyChunkButtonManager | 24 |
⚠️ 本类行数居中 —— 63 行既要实现接口、 又要维护脏区块状态(方块坐标集合 + 时间戳)。
相关
- ILocationProvider - 实现的接口
- DirtyChunkLayerManager - 消费方
- DirtyChunkRenderStep - 绘制本类数据