跨模组集成

基本信息

Draconic Evolution 通过 Loader.isModLoaded(...) 探测 19 个不同的 modid 字符串(对应 18 个模组,其中 gregtech / gregtech_nh / gregapi 是同一生态的三个不同字符串),全部为软依赖——@Mod 注解的 dependencies 只声明了 after: 与 required-after:gtnhlib(DraconicEvolution.java:23-31),没有任何 required-after: 指向下列模组。

依赖探测清单

被探测模组 ID 探测位置 用途
gtnhlib ModHelper.java:42 硬依赖,由 @Mod(dependencies = ... required-after:gtnhlib@[0.9.47,);) 声明
TConstruct ModHelper.java:38 巨剑(cleaver)检测,影响负面效果屏蔽
Avaritia ModHelper.java:39 无限装备剑检测
gregtech_nh ModHelper.java:40 GregTech 检测(applyModDamageAdjustments)
appliedenergistics2 ModHelper.java:41 AE2 浮动物品实体检测
hodgepodge ModHelper.java:43 兼容性补丁
backhand ModHelper.java:44 副手支持
Automagy DraconicEvolution.java:59 合成配方分支
EnderIO DraconicEvolution.java:60 合成配方分支
ComputerCraft CCOCIntegration.java:24 外设(peripheral)支持
OpenComputers CCOCIntegration.java:25 驱动器(driver)支持
dreamcraft CraftingHandler.java:26、GUITeleporter.java:39 配方分支 + 末影珍珠数量
ThermalDynamics CraftingHandler.java:850 配方分支
IronChest CraftingHandler.java:1001 配方分支
Baubles InventoryUtils.java:30 饰品栏支持
Thaumcraft DraconicArmor.java:240, 338、WyvernArmor.java:208 护甲神秘度减免 / 揭示之瞳
Forestry DraconicArmor.java:343, 359, 367, 376 养蜂人 / 自然学徒套装
gregtech DraconicArmor.java:380、WyvernArmor.java:276 危害防护(Hazmat);判定为 gregtech 存在且 gregapi 不存在
gregapi 同上 用于排除旧版 GregTech API

ModHelper.java:40 探测的是 gregtech_nh(GT5 官方 modid),而护甲类里探测的是 gregtech(旧版 modid)并额外排除 gregapi;而 ModHelper.getHazmatArmorConfigKey() 的 @Optional.Method 又用的是 gregtech_nh(ModHelper.java:107)。同一文件内三处判定用了两种不同字符串,引用时不可互相推断。

ComputerCraft / OpenComputers

integration/computers/CCOCIntegration.java 为两类电脑模组提供同一套外设接口 IDEPeripheral:

模组 注册方式 适配器
ComputerCraft ComputerCraftAPI.registerPeripheralProvider(new DEPeripheralProvider())(CCOCIntegration.java:29-31) integration/computers/cc/CCAdapter.java
OpenComputers Driver.add(new OCAdapter())(CCOCIntegration.java:33-35) integration/computers/oc/DEManagedPeripheral.java

两者的方法都标注了 @Optional.Method(modid = ...)(CCOCIntegration.java:28, 32),因此对应模组缺失时不会崩溃。

初始化调用点:CommonProxy.java:160 CCOCIntegration.init();

NotEnoughItems

NEI 集成位于 integration/nei/,共 6 个类:

类 作用
DENEIGuiHandler DE 机器的 GUI 配方处理器
IMCForNEI 向 NEI 发送 IMC 消息(配方覆盖等)
NEIDraconicevolutionConfig NEI 侧的配置项
ReactorNEIHandler 反应堆合成处理器(本地化键 nei.recipe.reactor)
CraftingChestOverlayHandler 龙箱的 NEI 叠加显示
CraftingChestStackPositioner 龙箱物品位置排布

NEI 在 @Mod 注解中以 after:NotEnoughItems 声明(DraconicEvolution.java:29),是软依赖;dependencies.gradle 中 NEI 仅为 compileOnly + runtimeOnly。

护甲专属集成

Thaumcraft

加载时护甲 tooltip 会追加神秘度减免百分比(DraconicArmor.java:240-247):

list.add(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("tc.visdiscount") + ": " + ...);

并为头盔增加 GogglesOfRevealing(揭示之瞳)开关(DraconicArmor.java:338-342)。

Forestry

按护甲槽位分别授予套装加成开关(DraconicArmor.java:343-378):

槽位 开关
头盔(armorType == 0) ApiaristArmor + NaturalistArmor
胸甲(armorType == 1) ApiaristArmor
护腿(armorType == 2) ApiaristArmor
靴子(armorType == 3) ApiaristArmor

NaturalistArmor(自然学徒)只在头盔上可用。对应接口为 forestry.api.apiculture.IArmorApiarist 与 forestry.api.core.IArmorNaturalist(DraconicArmor.java import 段)。

GregTech

按 Hazard.values() 逐项生成危害防护开关(DraconicArmor.java:380-388),键名由 ModHelper.getHazmatArmorConfigKey(Hazard) 提供(ModHelper.java:108-118),共 7 类:

GregTech 危害枚举 配置键 本地化键 中文名
ELECTRICAL HazmatElectrical button.de.HazmatElectrical.name 电气危险防护
BIOLOGICAL HazmatBiological button.de.HazmatBiological.name 生物危害防护
FROST HazmatFrost button.de.HazmatFrost.name 霜冻危害防护
GAS HazmatGas button.de.HazmatGas.name 气体危害防护
HEAT HazmatHeat button.de.HazmatHeat.name 高温危害防护
RADIOLOGICAL HazmatRadiological button.de.HazmatRadiological.name 辐射危害防护
SPACE HazmatSpace button.de.HazmatSpace.name 缺失

实现接口为 gregtech.api.hazards.IHazardProtector,方法标注 @Optional.Method(modid = "gregtech_nh")(ModHelper.java:107)。

本地化缺失:SPACE 危害对应的 button.de.HazmatSpace.name 在 zh_CN.lang 与 en_US.lang 中都不存在(已用 Python 逐键核实)。该危害的护甲开关在游戏内会显示为原始键名。

dreamcraft 差异

GUITeleporter.java:39 用 dreamcraft 的存在与否改变末影珍珠槽位数量:

private static final int PEARLS_WITH_SHIFT = Loader.isModLoaded("dreamcraft") ? 64 : 16;

安装 dreamcraft 时每颗末影珍珠可放入的数量从 16 变为 64。这与 ConfigHandler 的 Teleporter Uses PerPearl(默认 1)是两个独立机制。

CraftingHandler.java:26 的 DREAMCRAFT_NOT_PRESENT 还会整块跳过一部分核心配方(CraftingHandler.java:28 的 if (DREAMCRAFT_NOT_PRESENT) { 包裹了龙芯与双足飞龙核心配方)。

数值

数值名 值 来源
探测到的 modid 字符串数 19 grep -rho 'isModLoaded("[A-Za-z0-9_]*")' src/main/java | sort -u
对应模组数 18(gregtech / gregtech_nh / gregapi 属同一生态) 同上
硬依赖数 1(gtnhlib) DraconicEvolution.java:23-31
电脑模组适配器数 2 integration/computers/
GregTech 危害类型数 7 ModHelper.getHazmatArmorConfigKey() 的 switch 分支数,ModHelper.java:110-117
dreamcraft 珍珠槽位数变化 16 → 64 GUITeleporter.java:39

相关条目

  • 护甲 - Thaumcraft / Forestry / GregTech 加成的载体
  • 合成配方系统 - 受 dreamcraft / ThermalDynamics / IronChest 影响的配方分支
  • 工具与武器 - TConstruct / Avaritia 检测影响伤害计算