Aspect Combination

基本信息

属性 值
源码 AspectPallet、AspectDragAndDropUIComponent、AspectPalletUIComponent
批量大小 batchSize = 10(硬编码)
批量触发 按住 Ctrl
前提 lang 明示 需研究大师(Research Mastery)

交互方式

操作 结果
拖放(drag & drop) 把元素写入六边形格
拖动时右键(drag & right-click) 组合两个元素
按住 Ctrl 组合 一次最多组合 10 个元素

lang 原文(researchtable.usagehint.description / .research_expertise):

“Drag & drop or drag & right-click aspects to draw and combine” “Hold ctrl while combining to make up to 10 aspects. Works with research mastery.”

batchSize = 10 的来源

PortContainer.kt:34-36:

val pallet: AspectPalletPort =
    AspectPallet(base = base, pool = pool, combiner = combiner, batchSize = 10)

硬编码字面量 10,不是配置项。ResearchTweaksConfig 中没有与批量大小相关的开关。

Ctrl 判定

AspectPalletUIComponent.kt:134:

private fun isIntendingToBatch() = isCtrlKeyDown()

直接调用 net.minecraft.client.gui.inventory.GuiContainer.isCtrlKeyDown(:21 导入)。

⚠️ 批量组合的「10 个」上限与「是否允许」是两回事:batchSize 决定一次做几次,而 research_expertise 说明该功能需要研究大师。lang 把它写在研究大师条目下,但源码中没有任何读取研究大师等级的判断——该限制由 lang 文本与玩家研究进度共同表达,不是代码分支。把它写成「源码里的等级检查」是编造。

同元素组合

allowCombiningSameAspect(Config,默认 false)控制「能否把元素拖到它自己身上」:

“Should an aspect be allowed to be dragged onto itself? (e.g. Ignis onto Ignis)”

默认不允许。这与 Thaumcraft 本体规则一致(同一元素不能自我组合),开启后允许 Ignis→Ignis 之类的自我组合。

元素排序:SIMPLE_TO_COMPLEX 的复杂度种子

AspectTree.kt:29-36 给 6 个始源元素设定「复杂度」基准值:

始源元素 复杂度种子 亲和倾向
ORDO(秩序) 10 秩序
ENTROPY(熵) 11 熵
EARTH(土) 12 秩序
FIRE(火) 13 熵
WATER(水) 14 秩序
AIR(气) 15 熵

复合元素的复杂度由两个组件之和推导(AspectTree.kt:66-69):

aspectToOrder += orderDerivable.associateWith { aspect ->
    aspectToOrder.getValue(aspect.components[0]) + aspectToOrder.getValue(aspect.components[1])
}

故「越复杂的元素排得越靠下」——这正是配置描述 “Aspects that take more combining are listed towards the bottom”。

左右面板按亲和倾向切分(AspectTree.kt:16-19):

  • orderLeaning = ORDER / EARTH / WATER 倾向
  • entropyLeaning = ENTROPY / FIRE / AIR 倾向

aspectToOrder、affinityToOrder、affinityToEntropy 三张表用 while 循环迭代求解,直到没有未定序的复合元素(AspectTree.kt:58-),故不依赖 TC 的元素注册顺序。

面板只显示已发现的元素

ResearchTableGuiFactory.palletComponent()(ResearchTableGuiFactory.kt:108-115):

val discoveredAspects = researcher.allDiscoveredAspects()
aspectProvider().filter { aspect -> aspect in discoveredAspects }

未发现的元素不显示——未知元素在研究台上有独立的「问号」图标表示(见 UnknownAspectTagTexture.kt)。

相关条目