ModCompat

基本信息

com.mitchej123.supernova.compat.colors.ModCompat —— 方块颜色兼容的注册真源:哪个 mod 装了,就注册它那些方块的彩色光照。

注册规模

项 数
枚举常量 24
关联 modid 字符串 57

⚠️ 与 Targeted Mod 是两套独立注册表: 那边只有 1 个常量(Angelica),用于 mixin 排除; 本类是 24 个常量 / 57 个 modid,用于方块颜色。

24 个常量

常量 modid 数 modid
PROJECTRED 1 `ProjRed
ET_FUTURUM 1 etfuturum
BOTANIA 1 Botania
THAUMCRAFT 1 Thaumcraft
THAUMIC_EXPLORATION 1 ThaumicExploration
THAUMIC_BASES 1 thaumicbases
THAUMIC_HORIZONS 1 ThaumicHorizons
GADOMANCY 1 gadomancy
TWILIGHT_FOREST 1 TwilightForest
NATURA 1 Natura
CHISEL 1 chisel
WITCHERY 1 witchery
BLOOD_ARSENAL 1 BloodArsenal
HEE 1 HardcoreEnderExpansion
EXTRA_UTILITIES 1 ExtraUtilities
OPENCOMPUTERS 1 OpenComputers
NETHERLICIOUS 1 netherlicious
BIBLIOCRAFT 4 BiblioCraft、BiblioWoodsBoP、BiblioWoodsForestry、BiblioWoodsNatura
GALACTICRAFT 2 GalacticraftCore、GalacticraftMars
GALAXY_SPACE 1 GalaxySpace
CAMPFIRE_BACKPORT 1 campfirebackport
RAILCRAFT 1 Railcraft
HBM 1 hbm
MISC 30 见下

MISC 的 30 个 modid

BuildCraft|Core、BuildCraft|Builders、ThermalExpansion、ThermalFoundation、 IC2、EnderIO、appliedenergistics2、DraconicEvolution、Ztones、 CarpentersBlocks、TConstruct、harvestcraft、catwalks、avaritiaddons、 RandomThings、TMechworks、EMT、GraviSuite、AdvancedSolarPanel、 ExtraBees、Forestry、MagicBees、FloodLights、computronics、OpenBlocks、 lootgames、BiomesOPlenty、ThaumicTinkerer、Automagy、kekztech

⚠️ 含竖线的 modid 是 Forge 的「合并写法」 —— 竖线不是分隔符, 而是 modid 自身的一部分,表示「某 mod 的某模块」,不可拆成两个 modid 计数。 本表内共 2 处:

  • BuildCraft|Core(MISC 内,BuildCraft 的 modid 真实写法)
  • ProjRed|Illumination(PROJECTRED 常量,ProjectRed 的 Illumination 模块)

📌 订正(2026-10-03):原表把 PROJECTRED 记为 2 个 modid (拆成 ProjRed、Illumination),导致「modid 数」列求和 = 58, 与表头自述的 57 差 1。源码 ModCompat.java:8 实为单一字符串 PROJECTRED(ProjectRedColors::register, "ProjRed|Illumination"), 故该行应为 1;订正后列求和 = 57,与表头及 ModCompat.java 枚举实测(24 常量 / 57 modid)一致。

同理 appliedenergistics2 全小写、Ztones 首字母大写 —— modid 大小写不统一。

触发逻辑

public static void registerAll() {
    for (ModCompat mod : values()) {
        if (mod.anyModLoaded()) {
            try { mod.registrar.run(); }
            catch (Exception e) { Supernova.LOG.error("Failed to register color compat for {}", mod.name(), e); }
        }
    }
}
  • 任一关联 modid 命中即注册(anyModLoaded 用 Loader.isModLoaded);
  • 单个常量注册失败只打日志不中断 —— 其余兼容继续。

相关条目

源码

  • src/main/java/com/mitchej123/supernova/compat/colors/ModCompat.java