研究总览
基本信息
| 属性 | 值 |
|---|---|
| 键常量类 | thaumic.tinkerer.common.lib.LibResearch |
| 常量总数 | 92(91 个研究键 + 1 个分类名) |
| 研究分类 | TT_CATEGORY(LibResearch.CATEGORY_THAUMICTINKERER) |
| 研究基类 | TTResearchItem(普通)/ KamiResearchItem(KAMI,额外 setConcealed()) |
| 直注册入口 | ResearchHelper.initResearch(),调用点 TTCommonProxy.java:191 |
| 自动注册入口 | TTRegistry.postInit() → registerResearch(),调用点 TTCommonProxy.java:192 |
| 前缀约定 | 研究条目在魔导书中的本地化键为 ttresearch.name.<KEY> 与 ttresearch.lore.<KEY>;来源 mcmod.info 说明「本模组研究以 [TT] 前缀标记」 |
两条注册路径
| 路径 | 机制 | 数量 |
|---|---|---|
| 直注册 | ResearchHelper.initResearch() 中显式调用 new TTResearchItem(...).registerResearchItem() |
15 |
| 自动注册 | TTRegistry.postInit() 遍历 itemRegistry 与 blockRegistry,对每个 getResearchItem() 非空的项调用 registerResearch()(TTRegistry.java:355-366) |
由各物品/方块自行提供 |
TTRegistry.registerResearch() 只在 getResearchItem() != null 时才注册(TTRegistry.java:145-150),因此某个键是否真正出现在游戏中,取决于它所属的类是否被注册。
数值:可达性统计
| 状态 | 数量 | 含义 |
|---|---|---|
| 可达(由已注册方块/物品提供) | 59 | 正常情况 |
| 可达(ResearchHelper 直注册) | 15 | 正常情况 |
| 不可达:需 ComputerCraft | 2 | ASPECT_ANALYZER、GOLEM_CONNECTOR |
不可达:需 enableKami |
1 | WARP_GATE |
| 不可达:所属类为死注册 | 1 | REMOTE_PLACER |
| 无构造点(常量已声明但从不生成研究) | 13 | 见下表 |
| 分类名(非研究键) | 1 | TT_CATEGORY |
默认配置(CC 已加载、KAMI 启用)下实际注册的研究条目 = 59 + 15 = 74 条。
数值:无构造点的 13 个键
这些常量在 LibResearch 中已声明、且在源码中被引用过,但没有任何 new TTResearchItem(LibResearch.<KEY>, …) / new KamiResearchItem(LibResearch.<KEY>, …) 使用它们作为研究键,因此从不生成研究条目。
| 常量 | 键值 | 说明 |
|---|---|---|
KEY_MAGNET |
MAGNET |
与已达达的 KEY_MAGNETS = MAGNETS 并存 |
KEY_MOB_MAGNET |
MOB_MAGNET |
— |
KEY_INFUSED_INKWELL |
INFUSED_INKWELL |
注墨墨水瓶本身也无研究条目 |
KEY_ICHORCLOTH_HELM |
ICHORCLOTH_HELM |
实际头盔走 KEY_ICHORCLOTH_ARMOR |
KEY_ICHORCLOTH_CHEST |
ICHORCLOTH_CHEST |
基础胸甲 getResearchItem() 返回 null |
KEY_ICHORCLOTH_LEGS |
ICHORCLOTH_LEGS |
同上 |
KEY_ICHORCLOTH_BOOTS |
ICHORCLOTH_BOOTS |
同上 |
KEY_ICHOR_PICK |
ICHOR_PICK |
实际血凝镐走 KEY_ICHOR_TOOLS |
KEY_ICHOR_SHOVEL |
ICHOR_SHOVEL |
血凝锹无研究条目 |
KEY_ICHOR_AXE |
ICHOR_AXE |
血凝斧无研究条目 |
KEY_ICHOR_SWORD |
ICHOR_SWORD |
血凝剑无研究条目 |
KEY_SKY_PEARL |
SKY_PEARL |
天空珍珠无研究条目 |
KEY_RELAY |
LEVITATOR_RELAY |
只作为配方 id 出现在 BlockMobilizerRelay.getRecipeItem()(BlockMobilizerRelay.java:92) |
KEY_RELAY是「引用了但用途不是研究」的典型:它在TTRegistry的注册列表中找不到对应的getResearchItem()构造点,而是出现在ThaumicTinkererArcaneRecipe的构造参数首位。
数值:条件可达的 4 个键
| 键 | 键值 | 条件 | 所属类 |
|---|---|---|---|
KEY_ASPECT_ANALYZER |
ASPECT_ANALYZER |
LoadedMods.computerCraftLoaded |
BlockAspectAnalyzer |
KEY_GOLEMCONNECTOR |
GOLEM_CONNECTOR |
LoadedMods.computerCraftLoaded |
BlockGolemConnector |
KEY_WARP_GATE |
WARP_GATE |
ConfigHandler.enableKami |
BlockWarpGate |
KEY_REMOTE_PLACER |
REMOTE_PLACER |
永不满足 | BlockRPlacer(shouldRegister() 恒 false) |
KEY_REMOTE_PLACER 是唯一「有构造点但永不注册」的键:其 getResearchItem() 写在 BlockRPlacer 内,而该方块的 shouldRegister() 恒返回 false。
功能:KamiResearchItem 的自动前置
KamiResearchItem.setPages()(research/KamiResearchItem.java)在设置页面前自动扫描全部研究分类,把满足以下条件的研究 id 追加进 parentsHidden:
- 研究未丢失(
!isLost())、非虚拟(!isVirtual())、且不是KamiResearchItem自身 - 不在
Blacklist中(Blacklist初始含"MINILITH",另可由 IMC 追加) - id 不以
KAMI结尾 - 所属分类属于
TT_CATEGORY、BASICS、GOLEMANCY、ARTIFICE、ALCHEMY、THAUMATURGY之一
因此每条 KAMI 研究都会自动列出它之前需要完成的全部普通研究。构造时调用 setConcealed() 使 KAMI 研究在魔导书中隐藏。
Blacklist 另可由 IMC 消息 AddResearchBlacklist 追加(见 API)。
附魔研究键共用问题
14 个附魔中只有 6 个使用了各自的独立研究键;其余 8 个(Focused Strike、Dispersed Strikes、Valiance、Final Strike、Tunnel、Shatter、Shockwave、Pounce)全部传入 LibResearch.KEY_ENCHANT_VAMPIRISM。这 8 个键(KEY_ENCHANT_DISPERSED_STRIKE、KEY_ENCHANT_FINAL_STRIKE、KEY_ENCHANT_FOCUSED_STRIKE、KEY_ENCHANT_POUNCE、KEY_ENCHANT_TUNNEL、KEY_ENCHANT_SHOCKWAVE、KEY_ENCHANT_SHATTER、KEY_ENCHANT_VALIANCE)虽在 LibResearch 中定义并由 ResearchHelper 直注册(故计入上方 15 条),但不是这 8 个附魔的解锁条件。详见 自定义附魔。
相关条目
- 自定义附魔 - 14 个附魔的研究门控
- 机器与功能方块 - 10 个方块的研究归属
- KAMI 维度与浮空装置 - 传送门与浮空装置的研究
- API:IMC - 运行时追加研究黑名单