跨模组注册内容

基本信息

属性 值
入口 shedar.mods.ic2.nuclearcontrol.crossmod.CrossModLoader
附加方块 2
附加物品 9
附加 TileEntity 4
生命周期 init()(Big Reactors / AE2 / Vanilla)、postinit()(RF / Mekanism)
配方开关 IC2NuclearControl.instance.recipes 决定加载 normal 还是 gregtech 配方组

功能

跨模组集成 记录的是接线方式(哪个集成在什么时机被调用、依赖怎么声明)。本页记录的是这些集成实际注册进游戏里的内容——方块、物品与 TileEntity——因为它们和主类注册的 2 方块 / 16 物品 / 11 TileEntity 是同等层级的可获得内容,但不在主类里。

主类 IC2NuclearControl.java:157-174 之外的注册全部来自 crossmod/ 下的 5 个类。每一项都要目标 mod 存在才会注册。

一、附加方块(2 个)

注册名 类 目标 modid 触发点
NC-BRinfoFetch BlockActiveReactorInfoFetch BigReactors CrossModLoader.init() → CrossBigReactors.doStuff()
networkLink BlockNetworkLink appliedenergistics2 CrossModLoader.init() → CrossAppeng.registrationCheck()

两者都带一个 TileEntity,见下表。

二、附加物品(9 个)

注册名 类 目标 modid 来源
NC-BRreactorCard ItemCardRFSensor BigReactors CrossBigReactors.java:34
NC-BRrfsensorKit ItemKitRFSensor BigReactors CrossBigReactors.java:35
RFSensorCard (RF 系) ThermalExpansion 或 BuildCraft|Core CrossRF.java:24
MekRFenergyCard MekRFCard Mekanism CrossMekanism.LoadItems()
ItemInventoryScannerCard ItemCardInventoryScanner 无(始终注册) Vanilla.java:25
ItemVanilliaKit ItemVanillaKit 无(始终注册) Vanilla.java:26
ItemVanillaMachineCard ItemVanillaMachineCard 无(始终注册) Vanilla.java:27
KitAppeng ItemKitAppeng appliedenergistics2 CrossAppeng.java:32
CardAppeng ItemCardAppeng appliedenergistics2 CrossAppeng.java:33

原版机器三件套

Vanilla.initVanilla() 在 CrossModLoader.init() 中无条件调用,不检查任何 mod 是否安装,所以这 3 个物品是本条目中唯一不依赖第三方 mod 的跨模组注册内容:

  • ItemInventoryScannerCard —— 读取目标容器内容
  • ItemVanilliaKit —— 右键目标方块生成对应卡片的工具包
  • ItemVanillaMachineCard —— 读取原版机器状态

ItemVanilliaKit 的 setUnlocalizedName 也带着同样的拼写(Vanillia),与注册名 ItemVanilliaKit 一致。

Vanilla.initVanilla() 随后给工具包加一条 IC2 advancement 配方(Vanilla.java:30-35),但在 Loader.isModLoaded("dreamcraft") 为真时提前 return,不注册该配方(Vanilla.java:29-31)。

三、附加 TileEntity(4 个)

注册名 类 目标 modid 来源
NC-BRinfoFetch TileEntityBlockFetcher BigReactors CrossBigReactors.java:36
networkLink TileEntityNetworkLink appliedenergistics2 CrossAppeng.java:34
IC2NCAverageCounterRF RFTileEntityAverageCounter ThermalExpansion 或 BuildCraft|Core CrossRF.java:26
IC2NCEnergyCounterRF RFTileEntityEnergyCounter ThermalExpansion 或 BuildCraft|Core CrossRF.java:27

RF 系计数器的注册条件是 Loader.isModLoaded(ModLib.TE) || Loader.isModLoaded(ModLib.BC)(CrossRF.java:19)——即装了 Thermal Expansion 或 BuildCraft 之一即可,不要求 IC2。CrossRF 把条件记在 _RFModPresent 字段上,getAverageCounter() / getEnergyCounter() 靠反射实例化对应 TileEntity。

Mekanism 卡片采用两段式:CrossModLoader.postinit() 先 new CrossMekanism()(构造函数用 Class.forName 探测 mekanism.api.energy.IStrictEnergyStorage,设 classExists),再在 Loader.isModLoaded(ModLib.MEKANISM) 时调 LoadItems()(CrossModLoader.java:30-35)。

配方组开关

Big Reactors 与 AE2 的注册方法内部各有一对 if,按 IC2NuclearControl.instance.recipes 的值(转小写后)选择配方组:

recipes 值 Big Reactors AE2
normal BigReactorsRecipesNew.addRecipes() AppengRecipes.addRecipesToRegistry()
gregtech BigReactorsRecipesGregtech.addRecipes() AppengRecipes.addGregtechRecipes()
其他值 两组都不加载 两组都不加载

方块与物品本身在配方判断之前就已注册,所以无论 recipes 设成什么,这两个集成的内容都能获得,只是可能没有配方。

相关条目