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 行既要实现接口、 又要维护脏区块状态(方块坐标集合 + 时间戳)。

相关