Aspect Combination Handler

基本信息

属性 值
类型 NEI Recipe / Usage Handler
源码类 com.gtnewhorizons.aspectrecipeindex.nei.AspectCombinationHandler
基类 TemplateThaumHandler
Overlay ID thaumcraft.aspects
界面名 aspectrecipeindex.aspect_combination.title = “Aspect Combination”
IMC 关联物品 Thaumcraft:blockTable:2(研究桌,handler 高度 43)

功能:查询元素的父元素(是复合元素则显示 成分A + 成分B = 结果,是原始元素则显示 “Primal”),以及"某元素能参与合成出哪些新元素"。

加载路径

方法 条件 行为
loadCraftingRecipes(ItemStack) 输入是 ItemAspect 且 shouldShowAspect 为该元素建一个 AspectCombinationRecipe
loadCraftingRecipes(String, Object...) outputId == overlay 遍历 Aspect.aspects.values(),逐个过滤可见性
同上 outputId == "item" 转发到 ItemStack 版本
loadUsageRecipes(ItemStack) 输入是 ItemAspect 且 shouldShowAspect 遍历 Aspect.getCompoundAspects(),凡 ArrayUtils.contains(components, 输入元素) 且该复合元素也可见,则为其建配方
loadUsageRecipes(String, Object...) inputId == "item" 转发
同上 inputId == overlay 转发给 loadCraftingRecipes(而非 usage)——即在 overlay 下用法的"下一页"会回到配方加载

可见性判定为 Util.shouldShowAspect(aspect),受 showUndiscoveredAspectRecipes 门控。

界面布局

原始元素(aspect.isPrimal()):

  • 只有结果,位置 (OUTPUT_X, 5) = (75, 5)。
  • drawBackground 在 (84, 25) 居中绘制 lang 键 tc.aspect.primal。

复合元素:

  • 结果在 (75 - 33, 13) = (42, 13)。
  • 两个成分分别在 (75, 13) 与 (75 + 33, 13) = (108, 13)。
  • 背景绘制时先 GL11.glTranslatef(-33, 8, 0) 整体左移上移,再在 (68, 17) 画 "="、(100, 17) 画 "+",最后平移回去((33, -8, 0))。

成分取自 aspect.getComponents(),固定索引 components[0] 与 components[1]。

drawExtras 特例

drawExtras 覆写:只对第 0 个配方调用父类实现(源码注释 “Only show these for the first result to limit clutter”)。因此翻页时研究控件与 “See All” 标签只在第一页出现。

前置研究

每个配方都挂 ResearchCategories.getResearch("ASPECTS"),且恒定标记为已完成(true)——这条配方本质是"知识说明"而非合成步骤。

相关条目