TileIntegrationTable

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

注册信息

属性 值 来源
TileEntity 注册名 net.minecraft.src.buildcraft.factory.TileIntegrationTable BuildCraftSilicon.java:151-154
注册类 buildcraft.silicon.TileIntegrationTable 同上
所属 modid BuildCraft|Silicon BuildCraftSilicon.java:63
关联方块 BlockLaserTable,meta = 2 silicon/BlockLaserTable.java:80-81
父类 TileLaserTableBase silicon/TileIntegrationTable.java:25
实现接口 ISidedInventory 同上
是否配置门控 否(无条件注册) BuildCraftSilicon.java:152

槽位数量与布局

silicon/TileIntegrationTable.java 关键常量:

常量 值 行 含义
SLOT_OUTPUT 9 :27 产物槽索引
CYCLE_LENGTH 16 :29 合成一个周期占用的 tick 数
SLOTS Utils.createSlotArray(0, 10) → 0–9,共 10 :30 暴露给 ISidedInventory 的槽集合

GUI 侧槽位(silicon/gui/ContainerIntegrationTable.java:22-36)

输入槽 0–8 是 9 个,但布局不是 3×3 网格——源码用两个坐标数组显式排布:

public static final int[] SLOT_X = { 44, 44, 69, 69, 69, 44, 19, 19, 19 };
public static final int[] SLOT_Y = { 49, 24, 24, 49, 74, 74, 74, 49, 24 };

逐槽还原(:32 new SlotValidated(table, i, SLOT_X[i], SLOT_Y[i])):

槽位 X Y 位置说明
0 44 49 左侧中
1 44 24 左上
2 69 24 中上
3 69 49 中央
4 69 74 右下
5 44 74 左下
6 19 74 更左下
7 19 49 最左中
8 19 24 左上角

⚠️ 这是围绕中央的一个「环形 / 十字」布局(9 格围成 3×3 的边框加中心), 不是标准 3×3 矩阵。写条目时若画成 3×3 方阵即为编造。

产物槽:SlotOutput(table, 9, 138, 49)(:35)——索引 9,位于右侧。 另有客户端预览槽 SlotUntouchable(table.clientOutputInv, 0, 101, 36)(:36),不计入真实槽位。

处理速率 / 耗时(本篇核心常量)

CYCLE_LENGTH = 16(silicon/TileIntegrationTable.java:29),全仓仅此一处使用(:60):

tick++;
if (tick % CYCLE_LENGTH != 0) {
    return;              // 未到 16 的整数倍则本 tick 不干活
}

⚠️ 语义:Integration Table 的 updateEntity()(:47)每 tick 递增 tick, 只有 tick 是 16 的整数倍时才继续执行实际合成, 即一次配方合成周期为 16 tick = 0.8 秒。 这是 Silicon 层唯一写死「N tick 一次」节拍的机器。

另注意 :54-57:若 activeRecipe == null || !activeRecipeValid, 先把能量清零(setEnergy(0))再返回,tick 也不递增。

(其它 Silicon 机器的耗时都由 TileLaserTableBase + 激光供能决定,不写死。)

GUI / Container 配对

GUI 类 Container 类 配对处
buildcraft.silicon.gui.GuiIntegrationTable buildcraft.silicon.gui.ContainerIntegrationTable silicon/SiliconGuiHandler.java:58

自动化

ISidedInventory.getAccessibleSlotsFromSide 返回 SLOTS(:264), 即 0–9 共 10 个槽全部可被漏斗 / 管道访问(0–8 输入 + 9 输出)。

网络封包

走 TileLaserTableBase 基类同步。无独立的 Silicon 专用封包 ID。

相关条目