Cell Microscope
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | thaumicenergistics:cell.microscope(ItemEnum.java:25,CELL_MICROSCOPE("cell.microscope", new ItemCellMicroscope())) |
| 物品类 | thaumicenergistics.common.items.ItemCellMicroscope(继承 Thaumcraft ItemThaumometer 元素测探仪,ItemCellMicroscope.java:36) |
| 物品图标 | thaumcraft:blank(复用 ThA 的空白图标,registerIcons,:62-64) |
| 使用持续时间 | 50 tick(getMaxItemUseDuration 返回 50,:73-76) |
| 扫描目标种类 | 2 种:掉落物电池 / 方块电池容器(TARGET_NONE=0、TARGET_ENTITY_ITEM=1、TARGET_CELL_CONTAINER=2,:46-49) |
| 显示名 | Cell Microscope(en_US.lang:thaumicenergistics.item.cell.microscope.name) |
功能
Cell Microscope(电池显微镜)是一个扫描工具:它让玩家把 AE2 电池里装的东西当作扫描目标,批量完成 Thaumcraft 的要素鉴定,从而自动获得该物品的要素知识。对 GTNH 的高倍率配方包来说,这解决了「研究要素被电池锁住无法鉴定」的痛点。
核心机制(ItemCellMicroscope):
- 继承
ItemThaumometer而非普通Item,因此具备完整的 ThA 扫描语义(ScanManager.isValidScanTarget/completeScan,:139-145) - 按住右键蓄力:
onItemRightClick定位目标并写入 NBT,setItemInUse(stack, 50)(:77-88) - 蓄力期间持续校验:
onUsingTick每 tick 重新定位目标,若与写入的不一致则清空并中断(:91-107) - 最后 5 tick 触发扫描:
if (count <= 5) { stopUsingItem(); clearScanTarget(); doScan(); }(:103-106) - 两类目标(
findScanTarget,:153-177):- 视线 10 格内的
EntityItem,且其ItemStack能被 AE2 cell registry 解析为电池(EntityUtils.getPointedEntity(p.worldObj, p, 0.5D, 10.0D, 0.0F, true),:155) - 视线所指方块位置的
TileEntity实现ICellContainer
- 视线 10 格内的
- 批量扫描:对电池容器会遍历
getCellArray(ITEM_STACK_TYPE)的全部电池逐一扫描(:113-121),不是只扫一个 - 逐物品扫描:对每个
IAEItemStack构造ScanResult(1, itemId, damage, null, "")并调用ScanManager.completeScan(p, sr, "@"),前缀@表示「来自扫描工具」(:132-148) - 失败提示补发:ThA 只同步成功扫描到客户端,失败的不同步,因此 ThE 手动补发
Packet_C_CellMicroscopeScanFeedback.sendScanFeedback(p, sr)以显示失败原因(:144-146) - 扫描音效:客户端每 2 tick 播放一次
thaumcraft:cameraticks,音量0.2F,音高0.45 + count/50 + rand×0.1(playScanEffects,:182-191) - NBT 键:
scanType/scanEntity/scanX/scanY/scanZ(:38-43)
注意:本物品只扫描 ITEM_STACK_TYPE(物品电池)。源码中 doInventoryScan 与 isItemStorageCell 均写死 ITEM_STACK_TYPE,不扫描 ThE 自己的要素电池(ESSENTIA_STACK_TYPE)—— 这是源码的确定行为,非疏漏描述。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 蓄力时间 | 50 tick | getMaxItemUseDuration 返回 50(:73-76) |
| 扫描触发点 | 剩余 ≤ 5 tick | if (count <= 5)(:103) |
| 视线拾取距离 | 10.0 格 | EntityUtils.getPointedEntity(..., 10.0D, ...)(:155) |
| 视线拾取扩张量 | 0.5 | 0.5D(:155) |
| 音效间隔 | 每 2 tick | if (count % 2 == 0)(:184) |
| 音效 | thaumcraft:cameraticks,音量 0.2F |
:186-190 |
| 合成所需要素 | AIR 300 + EARTH 300 + ORDER 300 |
FeatureCellMicroscope.java:44-47 |
| 研究要素 | VOID 5 + ENERGY 5 + CRYSTAL 3 + METAL 3 |
FeatureCellMicroscope.java:60-64 |
| 研究复杂度 | COMPLEXITY_SMALL(=1) |
FeatureCellMicroscope.java:68 |
| 物品前置 | 无(getItemReqs 返回空数组 new Object[]{},:31-34) |
— |
交互
| 触发 | 行为 |
|---|---|
| 按住右键瞄准掉落电池 | 定位并锁定目标,播放蓄力音效 |
| 蓄满 50 tick | 对目标内所有物品批量完成 ThA 扫描 |
瞄准 ICellContainer 方块 |
遍历其全部电池槽逐一扫描 |
| 蓄力中移开视线 | 目标不匹配 → 清空 NBT 并中断扫描 |
| 扫描失败 | 手动补发客户端反馈封包,显示失败提示 |
合成配方
奥术合成(Arcane Crafting),FeatureCellMicroscope.java:48-54:
RTR
SQS
RPR
| 字符 | 物品 |
|---|---|
Q |
QuantumLink(量子链接) |
P |
ItemP2P(AE2 P2P 隧道) |
S |
Singularity(奇点) |
T |
Thaumometer(元素测探仪) |
R |
EssentiaMirror(要素镜) |
合成所需要素:AIR 300 + EARTH 300 + ORDER 300(:44-47)—— 是本 mod 要素消耗最高的奥术配方之一(每种 300 点)。
研究(FeatureCellMicroscope.java:59-71):id thaumicenergistics.TECELLMICROSCOPE,研究要素 VOID 5 + ENERGY 5 + CRYSTAL 3 + METAL 3,复杂度 COMPLEXITY_SMALL(=1),图标为本物品,2 页(说明页 + 配方页),父研究为 getFirstValidParentKey(false)。父 feature 为 FeatureThaumicEnergisticsResearch;registerPseudoParents() 为空(:56)。该研究未调用 setConcealed(),因此在神秘录中直接可见。
本 feature 恒定启用:FeatureCellMicroscope.checkConfigs 直接 return true(FeatureCellMicroscope.java:25-28),源码中没有任何配置项或 AE2 特性门控它。
相关条目
- ThE 网络封包 -
Packet_C_CellMicroscopeScanFeedback补发失败提示 - ThE 研究体系 - 本物品所属的研究节点
- ME Essentia Storage Cell - 同类存储物品(但本工具不扫描要素电池)