信息类模组集成

基本信息

属性 值
集成包 crossmod/waila/、crossmod/appeng/、crossmod/nei/、crossmod/opencomputers/、crossmod/vanilla/
统一入口 CrossModLoader(crossmod/CrossModLoader.java:11)

Waila

注册通过 FML 内部通信消息完成,而非直接调用:向 "Waila" 发送 register 消息,内容为回调类名(CrossModLoader.java:21-24):

FMLInterModComms.sendMessage("Waila", "register",
        "shedar.mods.ic2.nuclearcontrol.crossmod.waila.callbackRegister");

回调 CrossWaila.callbackRegister 为 5 类 TileEntity 注册 Waila 悬停信息(crossmod/waila/CrossWaila.java:12-17):

TileEntity Provider
TileEntityThermo ThermoProvider
TileEntityInfoPanel InfoPanelProvider
TileEntityHowlerAlarm HowlerAlarmProvider
TileEntityEnergyCounter EnergyCounterProvider
TileEntityAverageCounter AverageCounterProvider

注意 IC2NuclearControl.init 中还有一段被注释的、写法相同的旧 Waila 注册(IC2NuclearControl.java:210-212),实际生效的是 CrossModLoader.init 里的那一份。

Applied Energistics 2

属性 值
检测 Loader.isModLoaded(ModLib.AE2),即 appliedenergistics2(crossmod/appeng/CrossAppeng.java:20)
日志 「Large Storage System? We can help to monitor that!」(CrossAppeng.java:21)
阶段 init 阶段(CrossModLoader.java:26)

条件注册(CrossAppeng.java:28-34):

类型 注册名 类
方块 networkLink BlockNetworkLink
TileEntity networkLink TileEntityNetworkLink
物品 KitAppeng ItemKitAppeng
物品 CardAppeng ItemCardAppeng

中文名见 zh_CN.lang:30-31(应用能源卡片)与 tile.NetworkLink(ME 网络监视器)。配方按 recipes 分流:normal 调 AppengRecipes.addRecipesToRegistry()(5 处 addRecipe),gregtech 调 AppengRecipes.addGregtechRecipes()(CrossAppeng.java:36-42)。

OpenComputers

CrossOpenComputers 在 init 阶段且仅当 OpenComputers 加载时实例化(IC2NuclearControl.java:209)。构造函数先检查 modid,再用反射探测 li.cil.oc.api.Driver(crossmod/opencomputers/CrossOpenComputers.java:11-18),成功后注册 6 个 OC 驱动(CrossOpenComputers.java:23-30):

驱动类 对应方块
DriverAdvancedInfoPanel 高级工业信息屏
DriverInfoPanel 工业信息屏
DriverThermalMonitor 温度监控器
DriverHowlerAlarm 蜂鸣报警器
DriverAverageCounter 平均电力计数器
DriverEnergyCounter 电力计数器

不注册任何方块或物品,仅提供 OC 驱动。

NEI

项目 内容
配置类 NEINuclearControlConfig 实现 IConfigureNEI(crossmod/nei/NEINuclearControlConfig.java:6)
实现方法 loadConfig()、getName()、getVersion()(NEINuclearControlConfig.java:9,14,19)
提示处理器 TooltipHandler 实现 IContainerTooltipHandler(crossmod/nei/TooltipHandler.java:11)

TooltipHandler 处理三个方法:handleTooltip、handleItemDisplayName、handleItemTooltip(TooltipHandler.java:14,19,31),用于在 NEI 界面中显示本模组物品的额外说明。不注册方块或物品。

原版方块卡片(始终注册)

Vanilla.initVanilla() 在 init 阶段无条件调用(CrossModLoader.java:27),注册 3 个物品(crossmod/vanilla/Vanilla.java:21-27):

注册名 类 未本地化名
ItemInventoryScannerCard ItemCardInventoryScanner ItemInventoryScannerCard
ItemVanilliaKit ItemVanillaKit ItemVanilliaKit(拼写为 Vanillia)
ItemVanillaMachineCard ItemVanillaMachineCard ItemVanillaMachineCard

这 3 个物品使本模组的基准注册数为 2 方块 + 19 物品(主类 16 + Vanilla 3)。原版工具包另有配方(Vanilla.java:33-36),但若检测到 DreamCraft 加载则直接 return,跳过配方(Vanilla.java:29-31)。

死代码

IC2NuclearControl.init 中有一段被注释的 AE2 检查 // CrossAppeng.RegistrationCheck();(IC2NuclearControl.java:214)与 Big Reactors 调用 // CrossBigReactors.doStuff();(IC2NuclearControl.java:213),实际生效版本已移入 CrossModLoader.init。

相关条目