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