Node Transmodifier
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | ThaumicMachina:nodeTransmodifier |
| 类 | BlockNodeTransmodifier(继承 TMBlockContainer) |
| TileEntity | TileNodeTransmodifier(IInventory,4 槽) |
| 材质 | Material.rock |
| 库存名 | "Node Transmodifier"(hasCustomInventoryName() == false) |
| getRenderType | -1(TESR 路径,renderID = -1) |
| getIcon | 恒返回 customIcon,方块无 meta 差异 |
| GUI ID | 0(GuiID.ID_NODE_TRANSMODIFIER) |
| 硬度 / 抗性 / 亮度 | 未调用 setter —— 全部为 Block 默认值(硬度 0.0、抗性 0.0、亮度 0) |
| 掉落 | 未覆写 getDrops / getItemDropped —— 无掉落物 |
功能
本模组唯一的机器方块。玩家放入最多 4 个 Node Augmentation,然后用红石脉冲触发:updateEntity() 检测到 receivingIndirectRedstoneSignal 为真时,扫描以自身为中心的一个立方体区域,把每个槽位的节点改装 handle() 到区域内所有 TileNode 上。
它不是多方块结构:无 IMultiblock、无结构控制器、无方块框架判定。
数值
| 数值 | 值 |
|---|---|
| Inventory 槽数 | 4(new ItemStack[4]) |
| 每槽 stackLimit | 1(getInventoryStackLimit() 硬编码 1) |
| 扫描体积 | 13×13×13 = 2197 格(regionBounds = 7,循环 i/j/k ∈ [-6, 6]) |
| 扫描原点 | 相对 TE 自身坐标 xCoord/yCoord/zCoord |
| 目标实体 | thaumcraft.common.tiles.TileNode(Aura Node) |
| 触发方式 | 间接红石信号(receivingIndirectRedstoneSignal) |
| 束光起点 | (x+0.5, y+0.75, z+0.5) |
| 束光贴图 | ThaumicMachina:textures/misc/beam_transmodifier.png |
| 束光 speed / opacity / noClip | 0.015 / 0.25F / false |
| 束光颜色 | 两端 Color(4915330) → Color(7089607),按 sin(ticks/20) 插值 |
| GUI ID | 0 |
扫描范围推导:TileNodeTransmodifier.java:35-38
final int regionBounds = 7;
for (int i = -(regionBounds / 2 + 3); i < regionBounds; ++i) { // -(3+3) = -6 .. 6
每轴 13 格,范围关于原点对称。
交互
| 触发 | 行为 |
|---|---|
| 右键 | 打开 GUI(player.openGui(ThaumicMachina.instance, 0, world, x, y, z)) |
| 红石脉冲 | 扫描 13³ 体积,逐一执行 4 槽装改的 handle(node) |
| 关闭 GUI | 内容物随 TE 存 NBT;isUseableByPlayer 恒 true(无权限校验) |
| 方块破坏 | TMBlockContainer.breakBlock → world.removeTileEntity;不倾倒 4 槽内容物 |
源码缺陷
- 无任何配方。全仓
GameRegistry.addRecipe调用数为 0(core/TMObjects.java只注册 1 个奥术配方 + 循环 5 个注魔配方),本方块在生存模式无法获得。 - 默认硬度 0.0。
BlockNodeTransmodifier构造器(block/BlockNodeTransmodifier.java:15-22)只设了renderAsNormalBlock/renderID/isOpaqueCube,从未调用setHardness。 - 破坏丢槽:
TMBlockContainer.breakBlock(block/TMBlockContainer.java:31-34)只移除 TE,4 槽ItemStack[]不掉落也不返还。 isItemValidForSlot恒false(tile/TileNodeTransmodifier.java:176-178)。容器用SlotLocked覆盖了同一判断,所以实际可用,但 TE 侧的这个方法是死代码。- 服务器端也会跑
drawBeam前的逻辑:updateEntity中if (this.worldObj.isRemote) continue;出现在handle(node)之后,即服务端同样执行改装,只是不画特效。注释与实际顺序相反,容易误读。 doubleRecharge(TileNode)是死代码(tile/TileNodeTransmodifier.java:100-110):反射调用handleRecharge(boolean),但全仓无任何调用点,导致 Dual Charging 改装完全失效(详见 节点改装系统)。
相关条目
- Node Transmodifier GUI - 容器 / GUI / 槽位布局
- 节点改装系统 - 4 槽可装填的 2 种改装及其效果
- Node Augmentation - 本方块唯一接受的物品
- Wand Augmentation Core - 本模组唯一有配方的物品