Aspect 物品(aspectrecipeindex:aspect)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | aspectrecipeindex:aspect |
| 源码类 | com.gtnewhorizons.aspectrecipeindex.common.items.ItemAspect |
| 最大堆叠 | 64(Item 默认,本类未覆写) |
| 附魔适用 | 否(未覆写 getItemEnchantability) |
| 耐久度 | 无 |
| 创造模式标签 | Thaumcraft.tabTC(Thaumcraft 的标签页) |
| 子类型 | 是(setHasSubtypes(true)) |
| 注册时机 | FMLPreInitializationEvent 中 ModItems.init() |
这是本模组注册的唯一物品。它代表一个 Aspect(元素),供 NEI 的各 handler 把"元素"当作可搜索的伪物品使用。
物品变种如何区分
物品本体只有一个,具体是哪个 Aspect 存在 NBT 里,不在 metadata 里。
| 字段 | 类型 | 说明 |
|---|---|---|
NBT 键 Aspect |
String | Aspect.getTag() 返回的元素 tag |
| metadata | int | 只被渲染器当作"图标可见性开关"使用,见下 |
源码提供两个静态辅助方法:
ItemAspect.getAspect(ItemStack)— 取出 NBT 中的 Aspect;item == null、无 NBT 或 tag 无法解析时返回null。ItemAspect.setAspect(ItemStack, Aspect)— 写入 NBT;无 NBT 时自动新建NBTTagCompound。
功能
- 在 NEI 中作为"元素"的载体:右键查询 / 查找用途可以命中所有把该元素当作 vis 消耗或 essentia 需求的配方。
- 右键使用可消耗自身,直接获得 1 点该元素的 aspect pool(进而计入研究进度),详见 Aspect 研究点。
- 创造模式列表自动枚举
Aspect.aspects.values(),因此 Thaumcraft 插件新增的元素也会自动出现在标签页里,无需改代码。
metadata 与图标可见性
物品渲染器按 metadata 决定是否显示真实图标:
| metadata | 行为 |
|---|---|
| 0 | 仅当查看者已发现该 Aspect 时显示真实图标,否则显示 ? |
| 1 | 始终显示真实图标(无视是否已发现) |
| ≥ 2 | 始终显示 ? |
用途是让任务书 / 服务器装饰可以直接用固定 icon,而不必让每个玩家先去发现该元素。
getSubItems 生成的创造模式条目一律使用 metadata 0。
显示名称与提示
getItemStackDisplayName(客户端):
- 已发现 → 直接用
aspect.getName()。 - 未发现且
showUndiscoveredAspectNames = true→ 格式串aspectrecipeindex.aspect.undiscovered,即「%s (Undiscovered)」。 - 否则 →
tc.aspect.unknown(Thaumcraft 的"未知")。
addInformation(客户端)按同一套开关决定追加 aspect.getLocalizedDescription() 还是 tc.aspect.unknown。
数值
| 属性 | 值 |
|---|---|
| 单次右键获得的 aspect pool | 1 |
| 创造模式子物品数量 | Aspect.aspects.values().size() |
相关条目
- Aspect 研究点 - 右键消耗本物品的完整流程与服务端同步
- 配置项 -
showUndiscoveredAspectNames控制未发现元素的名称显示 - 颜色常量 - 本物品的 tooltip 复用统一的文本色
- Items Containing Aspect Handler - 以本物品为输入,按玩家扫描记录反查含该元素的物品
- Aspect Combination Handler - 以本物品为输入/输出,查询元素的父元素与组合
- 元素配方索引机制 - 本物品在查询链路中的角色