Supernova

[!INFO] Git Commit: 见 relation.md | Minecraft 1.7.10 / Forge(@Mod 用 acceptedMinecraftVersions = "[1.7.10]")

彩色光照(colored light)引擎重写:把原版「单一亮度」换成 RGB 三通道存储。

简介

Supernova(modid supernova)是 1.7.10 的光照引擎替换 mod。 它同时是 coremod 与普通 mod:

  • 两种光照模式 —— RGB(3 通道彩色)/ SCALAR(单通道,等价 Starlight)。
  • 63 个方块兼容适配 —— 24 个 ModCompat 常量 / 57 个 modid。
  • 6 种着色混合 —— 方块光 × 天光的 TintBlendMode。
  • 3 个 mixin JSON 全无 mixins 数组 —— 全部由 gtnhmixins 动态注册。
  • ChunkAPI 强依赖(仅 RGB 模式) —— 缺失时强制改写配置为 SCALAR。

⚠️ 分类名 supernova 与 modid 一致,但内容与「超新星/恒星」无关 —— SCALAR 仅表示「等价 Starlight 的快速无色模式」,是光照技术名词。

概念总览

概念 摘要 关联条目
coremod 入口 资源探测 ChunkAPI/Angelica,静态块改配置 SupernovaCore
mixin 注册 3 组 EARLY,JSON 数组为空 Mixins
引擎抽象 13 个抽象方法 + 两层继承 Supernova Engine
颜色注册 24 常量 / 57 modid ModCompat
存储 ChunkAPI DataManager Supernova Data Manager

核心

Mixin

光照引擎

注册表与 API

兼容

设置与命令

存储

客户端

依赖范围

依赖 方式 收录状态
hodgepodge@[2.7.179,) required-after ✅ 已登记(分类 hodgepodge)
chunkapi@[0.8.1,) after: + 资源探测 ✅ 已登记(分类 chunkapi)
angelica@[2.1.61,) after: + 资源探测 ✅ 已登记(分类 angelica)
EndlessIDs 资源探测(可选) ✅ 已登记(分类 endlessids-compat 同名分类 endlessids 见 relation.md)
EasyColoredLights 无声明,提供 dummy 容器 不在收录范围
Angelica API BlockLightProvider 资源路径探测 见上

源码缺陷

  1. SupernovaCore 静态块改写并保存用户配置 —— 缺 ChunkAPI 时把 lightingMode 改为 SCALAR 并 ConfigurationManager.save(...) 落盘。用户设的 RGB 被永久改写, 之后装了 ChunkAPI 也不会自动改回。
  2. 依赖探测用资源路径而非 modid —— getResource("com/falsepattern/chunk/api/DataRegistry.class") != null 只要 classpath 上有该 jar 就算「存在」,比 Loader.isModLoaded 宽松, 间接依赖也会误判。
  3. Angelica 是软依赖但影响 mixin 排除 —— dependencies = "after:angelica@[2.1.61,)" 不阻止旧版 Angelica 加载; 旧版会被 .addExcludedMod(TargetedMod.ANGELICA) 排除, 但 AngelicaCompat 却要求 api/BlockLightProvider.class 存在 —— 两者判据不同步, 可能出现「原版补丁被排除但兼容未启用」的中间态。
  4. enableStatsLog 日志无界增长 —— 配置注释自述 the file grows without bound while enabled, 无轮转/截断逻辑。
  5. versionChangeMessage 的 ChunkAPI 陷阱 —— 若在版本未变时返回非 null,ChunkAPI 视为不兼容变更, 每次读世界都弹启动询问框。源码已注释警示。
  6. 配置字段无 Java 初值 —— lightingMode / scaleEmissionToVanillaLight / enableStatsLog / tintBlendMode 均为 public static 且无字段初值, 真实默认只存在于 @Config.Default* 注解里; 而 Tint Blend Mode 的 current 字段有 Java 初值 SQUARED_WEIGHT —— 两处默认值来源不同, 改任一处需同步另一处。
  7. late mixin 为空壳 —— LateMixins 枚举无常量, mixins.supernova.late.json 存在但永不注入; 统计 mixin 数时「框架文件 2 个」与「实际注入 0 个」不可混淆。