跨模组注册内容
基本信息
| 属性 | 值 |
|---|---|
| 入口 | 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 设成什么,这两个集成的内容都能获得,只是可能没有配方。
相关条目
- 跨模组集成 - 12 项集成的触发点与依赖声明
- Nuclear Control 主方块 - 主方块及其 11 个 metadata
- 传感器定位卡 - 主类注册的 6 张定位卡
- 通用配置项 -
recipes配置项决定本表的配方组