节点基体 (Node Matrix)
基本信息
| 属性 | 值 |
|---|---|
| 类名 | shukaro.nodalmechanics.items.ItemMatrix |
| 父类 | net.minecraft.item.Item |
| 内部注册名 | NodalMechanics:nodalmechanics.matrix |
| 未本地化名(已调制) | nodalmechanics.matrix.attuned(lang key item.nodalmechanics.matrix.attuned.name) |
| 未本地化名(未调制) | nodalmechanics.matrix.unattuned(lang key item.nodalmechanics.matrix.unattuned.name) |
| 英文名 | Attuned Node Matrix / Unattuned Node Matrix |
| 最大堆叠 | 1(setMaxStackSize(1)) |
| 子类型 | 开启(setHasSubtypes(true)),但所有变体共用同一张贴图 |
| 贴图 | nodalmechanics:itemMatrix(registerIcons 一次性注册,getIconFromDamage 忽略 meta) |
| 稀有度 | 已调制 = uncommon(发光),未调制 = common |
| 耐久 / 附魔 | 未设置(Item 构造中无 setMaxDamage / setMaxStackSize 之外的属性调用),即无耐久、不可附魔 |
| 创造标签 | NodalMechanics.mainTab(NodalTab,标签名 lang key itemGroup.nodalmechanics.tab,中文「节点学」) |
⚠️ 注册名说明:
NodalItems.initItems()调用的是GameRegistry.registerItem(itemMatrix, itemMatrix.getUnlocalizedName()), 传入的是未本地化名nodalmechanics.matrix,因此内部注册名是NodalMechanics:nodalmechanics.matrix(modid 段NodalMechanics+ 重复的一段nodalmechanics.matrix)。 这是直接按NodalItems.java:11读出的结果,不是笔误修正。
功能
节点基体是本 mod 唯一的物品,也是整套系统的载体。它本身不执行任何动作,全部行为通过 NBT 中的 Aspects 字段表达:
- 未调制基体:没有
AspectsNBT,是"空"的(tooltip 显示「空」),无法用于节点催生。 - 已调制基体:
AspectsNBT 中存有一组要素(aspect)及其数量,是节点催生时提供要素种子的输入,也是创造标签里"一键拿样机"的变体来源。
判定逻辑在 ItemMatrix.isAttuned(ItemStack):只要 NBT 含有 Aspects 键就算已调制,
不做非空校验。因此一张写入空 Aspects 列表的基体会显示为「已调制」并带发光特效,
但在下文的两个配方里都会被拒绝(AspectList.size() == 0 → matches 返回 false)——
这是代码里真实存在的一个 UI 与可用性不一致的边界情况。
显示名通过覆写 getUnlocalizedName(ItemStack) 实现:按是否已调制追加 .attuned 或 .unattuned 后缀,
所以同一个物品在物品栏里同时存在两种名字(zh_CN:「节点基体(已调制)」「节点基体(未调制)」)。
要素标记(附魔等价说明)
ItemMatrix 没有自定义附魔。基体的"要素倾向"完全由 AspectList.writeToNBT() 写入的
Aspects NBT(每种本原要素一个条目,值为 essentia 数量)承载,这组数据被两个配方读取:
- 调制(把 essentia 源质瓶灌入基体)——见 Matrix Attunement
- 节点催生(把基体作为注入中心)——见 Node Infusion
基体的 vis 总量始终等于「NBT 里所有要素数量之和 × 4」。
创造标签内容
getSubItems 会在标签里列出 1 + N 个变体,其中 N = Aspect.getPrimalAspects() 的数量:
| 变体 | 数量 | NBT |
|---|---|---|
| 未调制基体 | 1 | 无 |
| 每个本原要素一个"已调制"基体 | 每个本原要素 1 个 | Aspects = 该要素 8 essentia |
本原要素列表由泰老 Aspect.getPrimalAspects() 在运行时给出(泰老本体为 6 种;
若其他 mod 追加本原要素,标签内的变体数会同步增加)。所有变体的堆叠数都是 1,
getIconFromDamage 忽略 meta,所以图上看起来与未调制基体完全一样,只有名字和高亮不同。
配方
初始基体(奥术注魔 · Infusion)
由 NodalRecipes.matrixRecipe 注册(ThaumcraftApi.getCraftingRecipes().add):
| 参数 | 值 |
|---|---|
| 配方 ID | NODECATALYZATION(需先完成该研究) |
| 核心物品 | NodalMechanics:nodalmechanics.matrix(构造函数的 key 参数) |
| 不稳定性 | 10 |
| 要素消耗 | 禁忌 SLOTH 16、禁忌 PRIDE 16、AURA 32、MAGIC 32 |
| 注入材料 | 禁忌魔力等价物 ForbiddenItems.deadlyShards meta 3、泰老平衡碎片 itemShard:6、deadlyShards meta 5、itemShard:6、deadlyShards meta 5、itemShard:6(共 6 个) |
| 产物 | IC2 拉普隆晶体 Ic2Items.lapotronCrystal(meta 为 OreDictionary.WILDCARD_VALUE) |
该配方在代码里的
key(核心物品)被设为节点基体本身、recipeOutput被设为拉普 tron 晶体。 这两个参数与「用基体换晶体」的直觉相反,是照抄NodalRecipes.java:31-40的原样。 TC4 注魔机实际返还哪一个栈由thaumcraft.api.crafting.InfusionRecipe与BlockArcaneInfusion决定,不在本 mod 源码内——此处不做推断,实际产物请以游戏内为准。 可以确定的是:这张配方是唯一一处把禁忌要素(DarkAspects)引入系统的配方。
itemShard:6 在源码里的变量名是 balancedShard;deadlyShards 的 meta 3 / meta 5
在本 mod 中没有区分命名,其具体变体名称由禁忌魔法定义。
后续配方
基体本身不参与工作台/奥术工作台合成,它只在两个由 mod 动态实现的配方里作为输入出现:
- Matrix Attunement:基体 + essentia 源质瓶 → 要素更多的基体
- Node Infusion:已调制基体 +
itemResource:14×4 → 注入用节点种子
两张配方的研究页面图示(静态 ShapedArcaneRecipe / InfusionRecipe)见
Research NODECATALYZATION。
数值
| 数值 | 值 | 来源 |
|---|---|---|
| 最大堆叠 | 1 | ItemMatrix 构造 |
| 创造标签变体数 | 1 + 本原要素数 | getSubItems |
| 标签示例要素量 | 8 | new AspectList().add(aspect, 8) |
| 调制换算倍率 | essentia ÷ 4(整数除) | RecipeAttune.ESSENTIA_MULTIPLIER |
| 催生 vis 倍率 | 要素量 × 4 | RecipeNode.ESSENTIA_MULTIPLIER |
| 催生注入材料 | itemResource:14 ×4 |
RecipeNode 构造函数 |
| 催生不稳定性 | 10 | RecipeNode.INSTABILITY |
| 扭曲值 | 8 | ThaumcraftApi.addWarpToItem(itemMatrix, 8) |
耐久与消耗
| 项目 | 值 |
|---|---|
| 最大耐久 | 无 |
| 每次使用消耗 | 无耐久消耗 |
| 使用后是否消失 | 调制与催生都会消耗输入的基体(作为配方材料被吃掉),但产物仍是基体/节点 |
第三方 mod 集成
- Thaumcraft:
Aspect/AspectList(NBT 数据格式)、ItemApi(源质瓶itemEssence:1、itemResource:14、itemShard:6、节点罐itemJarNode:0)。 - Forbidden Magic:
DarkAspects.SLOTH/DarkAspects.PRIDE作为初始基体配方的要素,ForbiddenItems.deadlyShardsmeta 3/5 作为注入材料。 - IC2:
Ic2Items.lapotronCrystal作为初始基体配方的recipeOutput。 - Tainted Magic / AWWayofTime:
@Mod注解里声明为required-after,但src/内没有任何代码引用,属于硬依赖却不参与逻辑。 - 无 NEI / NEI 集成代码;配方展示完全依靠泰老研究页面。
相关条目
- Matrix Attunement - 用 essentia 源质瓶给基体叠加要素,产出新的已调制基体
- Node Infusion - 以已调制基体为中心进行奥术注魔,随机产出节点类型与节点修饰符
- Research NODECATALYZATION - 解锁以上全部配方的研究条目