TileProgrammingTable

事实基准:/Users/evlos/a/mirror/BuildCraft(master,minecraftVersion = 1.7.10)逐行读源码。

注册信息

属性 值 来源
TileEntity 注册名 net.minecraft.src.buildcraft.factory.TileProgrammingTable BuildCraftSilicon.java:156-158
注册类 buildcraft.silicon.TileProgrammingTable 同上
所属 modid BuildCraft|Silicon BuildCraftSilicon.java:63
关联方块 BlockLaserTable,meta = 4 silicon/BlockLaserTable.java:84-85
父类 TileLaserTableBase silicon/TileProgrammingTable.java:28
实现接口 IInventory / ISidedInventory / ICommandReceiver 同上
是否配置门控 否(无条件注册) BuildCraftSilicon.java:157

槽位数量与布局

方块侧只有 2 个槽(silicon/gui/ContainerProgrammingTable.java:26-27):

槽位 类型 GUI 坐标 用途
0 Slot (8, 36) 输入(放入待编程的物品 / 机器)
1 Slot (8, 90) 输出 / 编程结果

注意:这不是 3×3 合成格。 Programming Table 的输入输出是线性的一进一出。

玩家背包:热键栏 9 槽(:31,y = 123)+ 主背包 27 槽(:36,y = 181)。

编程区尺寸(本篇最关键的常量)

silicon/TileProgrammingTable.java:30-31:

public static final int WIDTH = 6;
public static final int HEIGHT = 4;

即 宽 6 × 高 4 = 24 格的「线路编程画布」, 供玩家用「程序方块(programming board)」在画布上画线路,驱动高级工作台等机器。

调用点 :171:options = currentRecipe.getOptions(WIDTH, HEIGHT);

⚠️ WIDTH/HEIGHT 是编程画布的格数,不是物品槽数量—— 把这 24 误当成「24 个物品槽」是常见的语义写反。

处理速率 / 耗时

updateEntity() 注释明确写了 WARNING: run only server-side, see canUpdate()(silicon/TileProgrammingTable.java:49)—— 即实际更新由 canUpdate() 门控,客户端不跑这段逻辑。

⚠️ 本类没有「N tick 一次」这样的节拍常量,耗时由 TileLaserTableBase 与激光供能决定,不断言数值。

GUI / Container 配对

GUI 类 Container 类 配对处
buildcraft.silicon.gui.GuiProgrammingTable buildcraft.silicon.gui.ContainerProgrammingTable silicon/SiliconGuiHandler.java:72

网络封包

实现 ICommandReceiver,走 BuildCraft 的命令封包(NetworkUtils 通道)。 无独立的 Silicon 专用封包 ID。

相关条目