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)。
相关条目
- Config -
allowCombiningSameAspect、researchTableSortingOrder - Research Table GUI - 六边形网格与面板布局
- Resource Override - 教学文本与提示按钮
- Thaumcraft - 元素(Aspect)体系