Chunk Light Helper

基本信息

com.mitchej123.supernova.light.ChunkLightHelper —— RGB ↔ 原版亮度的桥接层。 原版只有单通道 NibbleArray,Supernova 是 R/G/B 三组 SWMRNibbleArray, 两者互转都在这里。

方法

方法 行 说明
hasSavedBlockData(SWMRNibbleArray[] blockR, ExtendedBlockStorage[]) 17 是否已有存档数据(避免重复导入)
importVanillaSky(SWMRNibbleArray[] skyR/G/B, ...) 31 原版天光 → RGB
importVanillaBlock(SWMRNibbleArray[] blockR/G/B, ...) 46 原版方块光 → RGB
seedVanillaSection(ExtendedBlockStorage, SWMRNibbleArray[] skyR/G/B, ...) 61 首次载入时播种
visibleData(SWMRNibbleArray) 121 提取可见数据(配合 VISIBLE_* 状态标记)
maxIntoVanilla(NibbleArray, byte[] r/g/b, int minByte, int maxByte, ...) 126 RGB → 原版(取各通道最大值)
syncSkyToVanilla(...) 144 RGB 天光回写原版

三通道 → 单通道的规则

maxIntoVanilla 的名字点明了策略:取 R/G/B 的最大值 写回原版 NibbleArray。这样在不支持彩色的环境(SCALAR 模式、 或不支持的渲染管线)里,方块仍能以「最亮通道」正确变亮,而不会偏色发暗。

minByte / maxByte 参数用于限定写入的字节范围。

与 SWMRNibbleArray 的配合

visibleData(SWMRNibbleArray) 依赖 SWMRNibbleArray 的 4 个状态标记 (VISIBLE_ABSENT / ZERO / FULL / DATA)跳过空/满 section。

存档互操作

hasSavedBlockData 是「是否需要从原版导入」的判据 —— 避免把已存好的 RGB 数据用原版单通道数据覆盖。

相关条目

源码

  • src/main/java/com/mitchej123/supernova/light/ChunkLightHelper.java