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。
相关条目
- Node Transmodifier - 触发方块
- 节点改装系统 - 4 槽装填后触发时执行什么
- Node Augmentation - 唯一可放入的物品