DirtyChunkLayerManager

脏区块调试图层

基本信息

属性 值
路径 com.gtnewhorizons.navigator.impl.DirtyChunkLayerManager
行数 100
父类 LayerManager
单例 INSTANCE

本仓唯一的可见图层

⚠️ 默认不生效 —— ClientProxy(:22-24)只在 GeneralConfig.enableDebugLayers(默认 false, 见 GeneralConfig)为真时注册本单例。

即:这是本 mod 自带的唯一可见图层,而且是调试用的、默认关闭的。

INSTANCE 单例

NavigatorApi.registerLayerManager(DirtyChunkLayerManager.INSTANCE);   // clientproxy :23

⚠️ 本类在根包 com.gtnewhorizons.navigator.impl(无子包), 与 internal(非公开)和 api(公开)并列。

⚠️ 4 个 impl 类都在同一个包(无子目录)—— 与 api/model/{layers,steps,...} 的多子包结构相反。

图层内容

「脏区块」= 被修改过(block change / 玩家交互)的区块。 本类用 ILocationProvider 表示每个脏区块, 通过 LayerManager 的 addExtraLocation(:494-498,支持非区块网格) 与 invalidateLocation 系列维护。

100 行的构成

成员 作用
INSTANCE 单例
addLayerRenderer(LayerManager, SupportedMods) 为 3 个地图模组各造渲染器
generateLocation(...) 重载 生成脏区块数据点
onUpdatePre / onUpdatePost 缓存前后钩子
DirtyChunkButtonManager 的持有 图层按钮

4 个 impl 类的协作

类 行 角色
本类 100 图层管理
DirtyChunkButtonManager 24 图层按钮
DirtyChunkLocation 63 数据源(ILocationProvider 实现)
DirtyChunkRenderStep 39 渲染步骤

⚠️ 4 个类合起来 226 行 —— 构成一个完整的「数据源 → 图层 → 按钮 → 渲染」最小示例, 即本 mod 的参考实现 / 使用范本。

⚠️ DirtyChunkRenderStep(39 行) 很可能是 UniversalRenderStep 的子类 (UniversalRenderStep 280 行是地图中立基类)。

相关