兼容性
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 游戏设定(依赖与门控) |
| 声明位置 | @Mod(dependencies = ...) 于 AspectRecipeIndex.java |
| 硬依赖数 | 4 组 |
| 软依赖数 | 3 |
| Minecraft | 仅 [1.7.10](acceptedMinecraftVersions) |
| 远程版本 | acceptableRemoteVersions = "*"(纯客户端模组,版本不敏感) |
硬依赖(required-after)
DEPENDENCIES 常量的完整值:
required-after:Thaumcraftrequired-after:gtnhmixinsrequired-after:gtnhlibrequired-after:TC4Tweaks|API|InfusionRecipeLibafter:Automagy
Thaumcraft
几乎所有功能都建立在 Thaumcraft 的内部 API 上,且大量使用非公开成员(不是 public API):
| 用到的内部成员 | 用途 |
|---|---|
Thaumcraft.proxy.playerKnowledge |
aspect pool 增减、元素发现判定 |
Thaumcraft.proxy.getScannedObjects() |
玩家扫描记录(索引数据源) |
ThaumcraftCraftingManager |
物品的 object tags / bonus tags |
GuiResearchRecipe.getFromCache |
扫描 hash → ItemStack |
ScanManager.generateItemHash |
ItemStack → 扫描 hash |
ClientTickEventsFML / MappingThread |
mixin 目标(见 Mixin) |
ConfigItems.itemResource / itemWandCasting |
魔杖材料与法器物品 |
EventHandlerRunic |
Runic 护甲的 charge / hardening 读写 |
PacketHandler / PacketAspectPool |
唯一的网络包(见 Aspect 研究点) |
ItemWispEssence |
被排除在 essentia 提取之外 |
也把创造模式标签页挂在 Thaumcraft.tabTC 上。
GTNHLib(gtnhlib)
| 用到的类 | 用途 |
|---|---|
com.gtnewhorizon.gtnhlib.config.Config |
@Config 注解,见 配置项 |
ConfigurationManager |
配置文件注册与读写 |
ConfigException |
注册失败时抛 RuntimeException 导致崩溃 |
com.gtnewhorizon.gtnhlib.color.ColorResource |
8 个 UI 颜色常量 |
注意 dependencies.gradle 里 GTNHLib 是 implementation(...) { transitive = false }。
GTNHLib Mixins(gtnhmixins)
提供 @LateMixin、ILateMixinLoader、IMixins、MixinBuilder、ITargetMod、TargetModBuilder、Phase。usesMixins = true 同时使 UniMixins 成为必需依赖。
TC4Tweaks / TC4RecipeLib / InfusionRecipeLib
三选一的 required-after 写法。用途集中在 InfusionRecipeHandler:
| 用到的类型 | 用途 |
|---|---|
net.glease.tc4tweak.api.infusionrecipe.InfusionRecipeExt |
把 TC 原生 InfusionRecipe 转成增强版 |
EnhancedInfusionRecipe |
提供 getCentral() / getComponentsExt() / getAspects() |
RecipeIngredient |
外围材料,支持 getRepresentativeStacks() 与 matches |
dependencies.gradle 里对应 net.glease:tc4recipelib。
容错设计:转换被 try { ... } catch (RuntimeException e) { continue; } 包住,注释写明"keep bad recipe from killing the scan"——一个坏配方不会中断整个扫描。RecipeIngredient.matches 更是被 catch (Throwable) 兜住。
软依赖与运行期门控
NotEnoughItems
dependencies.gradle里是api(...),是整个功能面的宿主:7 个 recipe handler、7 个 usage handler、GUI 覆盖、stringify handler 全部注册在 NEI 上。- 唯一的"可选项"是
API.registerStackStringifyHandler(...):整段包在try { ... } catch (NoSuchMethodError ignored) {}里,即 NEI 缺少该 API 时静默跳过。 - 本模组通过 IMC 主动向
NotEnoughItems发送注册消息,见 IMC 注册消息。
Automagy(after:Automagy,软)
唯一的运行期门控在 ResearchInfo.getResearchPrerequisites:
- 条件:
Loader.isModLoaded("Automagy")且researchItem.category.equals("AUTOMAGY")。 - 效果:额外从
tuhljin.automagy.config.ModResearchItems.cluesOnKill反查出"击杀并扫描"要求,追加到研究 tooltip(lang 键aspectrecipeindex.research.prerequisites.kill)。 - 反查用的是本模组自己的
Util.getKeysByValue(map, value)工具方法。 dependencies.gradle里 Automagy 是compileOnly("curse.maven:automagy-222153:2285272")。
GTNH-TC-Wands(软,门控整条魔杖配方路径)
WandRecipeHandler 里有一个 static final boolean GTNH_WAND_RECIPES = Loader.isModLoaded("gtnhtcwands"):
| 取值 | 配方来源 | 用到的 API |
|---|---|---|
true |
TCWandAPI.getWandWrappers() / getCaps() 交叉生成 |
AbstractWandWrapper、CapWrapper、SceptreWrapper、GTTier |
false |
WandRod.rods.values() × WandCap.caps.values() 笛卡尔积 |
无额外依赖 |
这是模组里最大的一个可选分支:GTNH-TC-Wands 缺席时走自研的笛卡尔积生成器,存在时用其 wrapper API(后者同时提供自定义杖配方)。dependencies.gradle 里它是 compileOnly。
GTNH 分支下的用途查询会额外处理:原始元素(做 SCEPTRE 杖)、杖柄、杖帽、螺钉 / 导体(OreDictionary 查 screw + 材料名)。
Baubles-Expanded(仅开发期运行)
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.22-GTNH:dev")。
不是发布依赖,也不参与任何门控——只是 runClient 环境的依赖(Thaumcraft 会因为缺少饰品模组而报错)。
不完全兼容的第三方
| 模组 | 情况 |
|---|---|
| TCNEIPlugin(jan2048 的 Thaumcraft NEI 插件) | 可以共存,但会重复。本模组 FMLMissingMappingsEvent 处理器显式 mapping.ignore() 掉 thaumcraftneiplugin:Aspect 这个物品映射;README 建议直接移除 TCNEIPlugin 与 TCNEIAdditions |
| TCNEIAdditions(Time_Conqueror,本模组的代码基础) | 同上 |
| 为 TCNEIPlugin 写兼容的第三方模组 | README 明确:不会自动兼容,需要各自加支持(这类代码会直接操作 TCNEIPlugin 的元素物品、依赖其奥法工作台覆盖行为) |
一般兼容
README 声明:绝大多数 Thaumcraft 插件新增的元素、配方、魔杖组件都会自动被支持,因为索引直接读 Aspect.aspects 与 ThaumcraftApi.getCraftingRecipes()。需要专门适配的只有 Automagy 与 GTNH-TC-Wands。
相关条目
- 配置项 - GTNHLib 配置框架
- Mixin 与 LATE 注入 - gtnhmixins 与 Thaumcraft 门控
- Access Transformer - 客户端 GUI 字段
- Wand Crafting Handler - GTNH-TC-Wands 双分支实现