Node Transmodifier GUI
基本信息
| 属性 |
值 |
| GUI ID |
0(GuiID.ID_NODE_TRANSMODIFIER) |
| 触发 |
右键 Node Transmodifier |
| 打开调用 |
player.openGui(ThaumicMachina.instance, 0, world, x, y, z)(block/BlockNodeTransmodifier.java:32) |
| 容器 |
ContainerNodeTransmodifier |
| 客户端 GUI |
GuiNodeTransmodifier(GuiContainer) |
| 处理器 |
GuiHandler(NetworkRegistry.INSTANCE.registerGuiHandler) |
| 槽位总数 |
4(改装)+ 36(玩家:3×9 + 9 快捷栏) |
| 网络包 |
无 —— 纯 vanilla Container 同步 |
| GUI 纹理 |
ThaumicMachina:textures/gui/nodeTransmodifier.png |
槽位布局
改装槽(inv/container/ContainerNodeTransmodifier.java:24-32):
int x = 20, y = 47;
for (int i = 0; i < 4; ++i) {
this.addSlotToContainer(new SlotLocked(this.tileTransmodifier, i, x, y,
new Item[] { TMObjects.nodeAugmentation }));
x += 40;
}
| 槽 |
索引 |
坐标 |
接受物品 |
| 1 |
0 |
(20, 47) |
仅 ThaumicMachina:nodeAugmentation |
| 2 |
1 |
(60, 47) |
同上 |
| 3 |
2 |
(100, 47) |
同上 |
| 4 |
3 |
(140, 47) |
同上 |
间距 40px(大于标准 18px),四槽横排。玩家背包由 TMContainer.loadPlayerInvSlots() 加入:主背包 xs=8, ys=84 起 3×9,快捷栏 ys+58。
SlotLocked.isItemValid(inv/slot/SlotLocked.java:18-27)逐个比对 stack.getItem() == item,只放行 TMObjects.nodeAugmentation。
数值
| 数值 |
值 |
| GUI ID |
0 |
| 改装槽数 |
4 |
| 改装槽坐标 |
(20,47) / (60,47) / (100,47) / (140,47) |
| 改装槽间距 |
40px |
| 每槽 stackLimit |
1(TE 的 getInventoryStackLimit()) |
| 玩家背包起点 |
(8, 84) |
| 快捷栏 Y 偏移 |
+58 |
| 玩家槽位总数 |
36 |
| 网络包 |
0 |
| GUI 纹理分辨率 |
未在代码中硬编码,由 GuiContainer 按 xSize/ySize 推导 |
交互
| 触发 |
行为 |
| 右键方块 |
打开 GUI(GuiHandler 按坐标取回 TileNodeTransmodifier) |
| 放入非改装物品 |
SlotLocked 拒绝 |
| 放入改装物品 |
存入 TE 的 4 槽 ItemStack[] |
| 关闭 GUI |
NBT 持久化(writeToNBT / readFromNBT 走 TMTileEntity 的 slot 工具方法) |
| 移入方块 |
无 —— TileNodeTransmodifier 未覆写 transferStackInSlot |
源码缺陷
- 无权限校验:
ContainerNodeTransmodifier.canInteractWith 恒返回 true(inv/container/ContainerNodeTransmodifier.java:35-37),任何玩家可开任何位置的该 GUI。
isUseableByPlayer 恒 true(tile/TileNodeTransmodifier.java:165-167),与上一条叠加。
- 无
transferStackInSlot:Shift+点击不跨槽转移,只能逐格移动。
- GUI 纹理路径大小写:
new ResourceLocation("ThaumicMachina:textures/gui/nodeTransmodifier.png")(client/gui/GuiNodeTransmodifier.java:19-20)用混合大小写前缀,磁盘目录为小写 assets/thaumicmachina/textures/gui/。
- GUI 内无任何信息文本:未渲染改装名、兼容性提示或 NBT 状态,4 个槽是完全静默的。
offsetStartPosY(0) 是空操作(ContainerNodeTransmodifier.java:20),TMContainer 的 ys 本就为 84。
相关条目