跨模组集成

基本信息

属性 值
包名 shedar.mods.ic2.nuclearcontrol.crossmod
Java 文件数 50(find crossmod -name '*.java' | wc -l)
统一入口 shedar.mods.ic2.nuclearcontrol.crossmod.CrossModLoader
目标 modid 常量 shedar.mods.ic2.nuclearcontrol.crossmod.ModLib
必需前置 required-after:IC2(IC2NuclearControl.java:61)

依赖声明

dependencies.gradle:4-16 中只有两项是 api(运行时必需):

依赖 作用域 版本
com.github.GTNewHorizons:GTNHLib api 0.9.33
net.industrial-craft:industrialcraft-2 api 2.2.828-experimental

其余 8 项为 compileOnly(仅编译期,运行时不打包):Applied Energistics 2 rv3-beta-853-GTNH、waila 1.19.22、OpenComputers 1.12.16-GTNH、GT5-Unofficial 5.09.52.331、BuildCraft 7.1.55、bigreactors(curse 2282591)、mekanism(curse 2475797)、argo 6.0。NotEnoughItems 2.8.72-GTNH 标为 devOnlyNonPublishable,不随成品发布。

argo 是 JSON 库,唯一使用者是 panel/http/HttpCardSender.java 与 panel/http/Request.java(import argo.jdom.*、import argo.format.*),即 Web Upgrade 的 HTTP 通道——该通道当前未被调用,见 升级件。

已接线的集成

集成 触发点 方式
Waila CrossModLoader.init()(crossmod/CrossModLoader.java:21-24) FMLInterModComms.sendMessage("Waila", "register", "...CrossWaila.callbackRegister"),crossmod/waila/ 下 6 个文件均 import mcp.mobius.waila
Big Reactors CrossModLoader.init() 第 25 行 CrossBigReactors.doStuff()
Applied Energistics 2 CrossModLoader.init() 第 26 行 CrossAppeng.registrationCheck()
原版机器 CrossModLoader.init() 第 27 行 Vanilla.initVanilla()
通用 TileEntity 桥接 CrossModLoader.postinit() 第 31 行 CrossTE.intergrateTE()
Mekanism CrossModLoader.postinit() 第 32-35 行 new CrossMekanism(),加载时才 LoadItems()
BuildCraft / Thermal Expansion IC2NuclearControl.postInit() 第 221 行 new CrossBuildcraft()
Railcraft IC2NuclearControl.postInit() 第 222 行 new CrossRailcraft(),纯反射实现
RF 系 IC2NuclearControl.postInit() 第 223 行 new CrossRF()
IndustrialCraft 2 IC2NuclearControl.postInit() 第 224 行 IC2Cross.getIC2Cross()
OpenComputers IC2NuclearControl.init() 第 209 行 if (Loader.isModLoaded("OpenComputers")) new CrossOpenComputers()
GregTech IC2NuclearControl.postInit() 第 243 行 new CrossGregTech()

crossmod/railcraft/CrossRailcraft.java 不 import 任何 railcraft 包,而是用 Class.forName("mods.railcraft.common.blocks.machine.ITankTile", ...) 探测后再反射调用 getTank()——所以它不需要在 dependencies.gradle 里声明 Railcraft。

ModLib 中的 modid 常量为:BC = "BuildCraft|Core"、TE = "ThermalExpansion"、AE2 = "appliedenergistics2"、BIG_REACTORS = "BigReactors"、ENDER_IO = "EnderIO"、MEKANISM = "Mekanism"、GT = "gregtech"(crossmod/ModLib.java:5-11)。注意 ModLib.GT 是 gregtech,与 @Mod 依赖串里的 gregtech_nh 是两个不同字符串。

未接线的集成(不算已实现功能)

  • NEI:crossmod/nei/NEINuclearControlConfig.java:10 内部会 GuiContainerManager.addTooltipHandler(new TooltipHandler()),但 NEINuclearControlConfig 这个类在全仓库除自身定义外没有任何引用。同时 NEI 依赖是 devOnlyNonPublishable,成品 jar 内根本不含 NEI 运行时。
  • IC2Classic / Spieiger 分支:IC2ExpCross、IC2Fallback、IC2Type 三个类提供 IC2 实验版与 Spieiger IC2 的兼容路径,由 IC2Cross.getIC2Cross() 选择。

相关条目