Thaumcraft 研究与注配方 API
基本信息
| 属性 | 值 |
|---|---|
| 配方类 | com.gtnewhorizon.gtnhlib.api.thaumcraft.EnhancedInfusionRecipe(extends InfusionRecipe) |
| 研究页类 | com.gtnewhorizon.gtnhlib.api.thaumcraft.FormattedResearchPage(extends ResearchPage) |
| 源码目录 | src/main/java/com/gtnewhorizon/gtnhlib/api/thaumcraft/ |
| 必需的外部模组 | Thaumcraft 4(4.2.3.5,dependencies.gradle 中 compileOnly) |
| 配套 mixin | Mixins.ENHANCED_INFUSION_RECIPE(LATE 阶段,依赖 Thaumcraft) |
api/thaumcraft/ 下只有这 2 个类。它们是 GTNHLib 中唯一直接依赖 Thaumcraft API 的对外接口,编译期以 compileOnly 引入(dependencies.gradle:compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev")),运行期不打包。
EnhancedInfusionRecipe
解决原版注魔台配方消耗外圈物品的问题。类注释(EnhancedInfusionRecipe.java:22-24)给出的原始用例:
capable of replacing items on the outer pedestals with other items rather than consuming them or leaving their containers behind. An example use case is Witching Gadgets’ Primordial Armor recipes leaving the Inert Primordial Pearls on the outer pedestals in place of Primordial Pearls.
| 成员 | 说明 |
|---|---|
Replacement record |
(ItemStack input, ItemStack output, boolean strict),定义一类输入替换成另一物品 |
NO_REPLACEMENT |
静态哨兵值 new Replacement(null, null, true),未找到匹配时返回 |
getReplacements() |
返回 new ArrayList<>(this.replacements) 的副本 |
addEnhancedInfusionCraftingRecipe(...) |
静态注册方法,直接加入 ThaumcraftApi.getCraftingRecipes() |
Replacement 的匹配规则(EnhancedInfusionRecipe.java:76-78 注释):
strict = false时,若input的 meta 为Short.MAX_VALUE则匹配所有 meta- 比较时忽略 NBT(附魔等),用
OreDictionary.itemMatches output可为null(如水桶等容器)
addEnhancedInfusionCraftingRecipe 在 output 既非 ItemStack 也非 Object[] 时返回 null 而不抛异常(:55-57),调用方需判空。
FormattedResearchPage
让研究页文本支持 String.format 占位符。源码头部注明来源(FormattedResearchPage.java:1-4):
Copied from Salis Arcana (https://github.com/rndmorris/Salis-Arcana/),LGPL-3,作者 Nikolay Sitnikov
3 个构造器对应 ResearchPage 的 3 种形态:
| 构造器 | 用途 |
|---|---|
FormattedResearchPage(String text, Object[] formattingData) |
普通文本页 |
FormattedResearchPage(String research, String text, Object[] formattingData) |
链接到另一研究 |
FormattedResearchPage(ResourceLocation image, String caption, Object[] formattingData) |
图片页 |
覆写 getTranslatedText() 为 StatCollector.translateToLocalFormatted(this.text, formattingData),把 formattingData 作为可变参数传给原版翻译器。
数值
| 数值名 | 值 |
|---|---|
api/thaumcraft 类数 |
2 |
Replacement 字段数 |
3 |
FormattedResearchPage 构造器数 |
3 |
apiPackage 总类数 |
14(含本目录 2 个) |