研究总览

基本信息

属性 值
键常量类 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 个附魔的解锁条件。详见 自定义附魔。

相关条目