模组兼容与集成
基本信息
| 属性 | 值 |
|---|---|
| 模组常量表 | 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 填充器 |