模组兼容与集成

基本信息

属性 值
模组常量表 com.cardinalstar.cubicchunks.util.Mods(enum,implements IMod, ITargetMod)
枚举条目数 270
modid 常量表 Mods.ModIDs(嵌套 public static class,Mods.java:306)
coremod 转换器 AddEmptyConstructorToChunk
ChunkAPI 数据管理 DataRegistry.disableDataManager("chunkapi", "lighting")(CubicChunks.java:188-190)

功能

Mods 枚举(util/Mods.java:15)列出 270 个 GTNH 常见模组条目,每个条目对应一个 Mods.ModIDs 常量,实现 IMod(isModLoaded() 判断)与 ITargetMod(供 gtnhmixins 的 addRequiredMod / addExcludedMod 使用)。部分条目带第二个参数——core 模组类名,例如:

  • Angelica(ModIDs.ANGELICA, "com.gtnewhorizons.angelica.loading.AngelicaTweaker")(Mods.java:23)
  • ChunkAPI(ModIDs.CHUNK_API, "com.falsepattern.chunk.internal.core.CoreLoadingPlugin")(Mods.java:65)
  • EndlessIDs(ModIDs.ENDLESS_IDS, "com.falsepattern.endlessids.asm.EndlessIDsCore")(Mods.java:89)

⚠️ GregTech 条目覆写了 getEffectiveModID() 返回 ModIDs.GREG_TECH_NH(Mods.java:100-106,覆写方法体在 :103-105),即判定"是否装了 GT"用的是 NH 分支的 modid。

具体的集成点

目标模组 集成方式 来源
RegionLib 硬依赖,@Mod(... dependencies = "required-after:RegionLib;") CubicChunks.java:77
GTNHLib 编译期 + 运行时依赖,提供 @Config 框架与 LazyBlock dependencies.gradle
Angelica 未装时才注入垂直视距滑块(见 垂直视距);MIXIN_RENDERGLOBAL 被 addExcludedMod(Mods.Angelica) 排除 Mixins.java:282
ChunkAPI MIXIN_S23_HEIGHTLIMITS 用 addExcludedMod 排除(:102),MIXIN_COORD_PACKER_CHUNKAPI 用 addRequiredMod 启用(:332);postInit 中禁用其 lighting 数据管理 CubicChunks.java:188-190
Et Futurum Requiem 可选,注册 low-deepslate 深板岩填充器 WorldGenerators.java:59-62
JourneyMap MIXIN_JOURNEYMAP_RENDER_GUARD(Phase.LATE + addRequiredMod)丢弃未完成的表面渲染;守卫类 util/JourneyMapRenderGuard.java Mixins.java:334-338
Applied Energistics 2 MIXIN_AE2_PLATFORM_SEND_CHUNK 把 AE2 的区块段重发改走立方体同步协议 Mixins.java:340-343
NotEnoughItems devOnlyNonPublishable 开发期依赖 dependencies.gradle
EndlessIDs core 模组类名登记,用于混装检测 Mods.java:89

coremod / ASM

gradle.properties:122 指定 coreModClass = asm.coremod.CubicChunksCoreMod,解析为 com.cardinalstar.cubicchunks.asm.coremod.CubicChunksCoreMod。它实现 IFMLLoadingPlugin 与 IEarlyMixinLoader:

  • getASMTransformerClass() 返回 com.cardinalstar.cubicchunks.asm.transformer.AddEmptyConstructorToChunk(asm/coremod/CubicChunksCoreMod.java:78-80)
  • getModContainerClass() 返回 com.cardinalstar.cubicchunks.asm.CubicChunksCoreContainer(:85-87)
  • getSetupClass() 与 getAccessTransformerClass() 均返回 null(:91-93、:100-102)
  • getMixinConfig() 返回 mixins.cubicchunks.early.json(:116-118)
  • 内嵌 TokenProvider 为 Mixin 环境提供 FORGE / FML / MC_FORGE 三个编译期 token(:50-72)
  • 带 @IFMLLoadingPlugin.SortingIndex(5000) 与 @IFMLLoadingPlugin.MCVersion("1.7.10")(:46-47,类声明在 :48)

CubicChunksCoreMod 构造器中的 initMixin() 调用与整个 initMixin() 方法体都被注释(:75、:104-113)——混装改由 gtnhmixins 的 IEarlyMixinLoader.getMixins() 接管(:121-123),不是缺陷。

数值

数值名 值 来源
Mods 枚举条目数 270 Mods.java,^ [A-Za-z0-9_]+\(ModIDs\. 计数
声明的硬依赖 1(RegionLib) CubicChunks.java:77
addRequiredMod 调用数 2(ChunkAPI、JourneyMap) Mixins.java:332,337
addExcludedMod 调用数 2(ChunkAPI、Angelica) Mixins.java:102,282
ASM 转换器数 1(AddEmptyConstructorToChunk) CubicChunksCoreMod.java:79-81
声明的 dependencies.gradle 运行时依赖 2(GTNHLib、RegionLib) dependencies.gradle
compileOnly 兼容依赖 3(ChunkAPI、EndlessIDs、Et-Futurum-Requiem) dependencies.gradle

交互

触发 行为
启动 coremod 注册 ASM 转换器与 Mixin 环境 token
缺少 RegionLib FML 直接拒绝加载(required-after)
装了 Angelica 排除 MIXIN_RENDERGLOBAL,垂直视距滑块不再注入
装了 ChunkAPI 应用 MIXIN_COORD_PACKER_CHUNKAPI,跳过 MIXIN_S23_HEIGHTLIMITS,关闭其 lighting 数据管理
装了 JourneyMap 丢弃不完整的表面渲染数据
装了 Et Futurum Requiem 启用 low-deepslate 填充器

相关条目