TileAdvancedCraftingTable

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

注册信息

属性 值 来源
TileEntity 注册名 net.minecraft.src.buildcraft.factory.TileAssemblyAdvancedWorkbench BuildCraftSilicon.java:148-151
注册类 buildcraft.silicon.TileAdvancedCraftingTable 同上
所属 modid BuildCraft|Silicon BuildCraftSilicon.java:63 @Mod
关联方块 Laser 方块 家族中的 BlockLaserTable,meta = 1 silicon/BlockLaserTable.java:78-79
父类 TileLaserTableBase silicon/TileAdvancedCraftingTable.java:50
实现接口 IInventory / ILaserTarget / ISidedInventory 同上
是否配置门控 否(BuildCraftSilicon.java:148 无条件调用) 同上

⚠️ 注册名是 TileAssemblyAdvancedWorkbench,不是 TileAdvancedCraftingTable—— 类名与注册名不一致。

槽位数量与布局

silicon/TileAdvancedCraftingTable.java:52:

private static final int[] SLOTS = Utils.createSlotArray(0, 24);

createSlotArray(0, 24) → 半开区间 [0, 24),即 24 个方块槽(0–23),SLOTS 长度为 24。

GUI 侧(silicon/gui/ContainerAdvancedCraftingTable.java:24-55):

槽位区 数量 类型 源码
合成矩阵 9(3×3) SlotPhantom(幽幻槽,可放样但不放实物) :30
产物(只读预览) 1 SlotUntouchable :34
工作台建材 15(5×3) Slot :38
工作台产物 9(3×3) SlotOutput,索引 15 + x + y*3 → 15–23 :44
玩家热键栏 9 Slot :50
玩家主背包 27 Slot :55

方块侧合计 = 9 + 1 + 15 + 9 = 34 个可视槽位,其中 ISidedInventory 暴露给自动化的是 SLOTS(0–23,24 个)。

⚠️ 槽 0–8 是 SlotPhantom(幽幻槽),只存「模式」不存物品—— 这与原版工作台语义不同:放入模板后机器照样合成,物品从建材区取。

能量门槛

silicon/TileAdvancedCraftingTable.java:59:

private static final int REQUIRED_POWER = 5000;

即需要 5000 单位的激光能量(ILaserTarget 契约)才启动一次合成。 这不是 RF,是激光能量(BuildCraft Silicon 的能量单位)。

处理速率 / 耗时

updateEntity()(silicon/TileAdvancedCraftingTable.java:224)。 ⚠️ 本类没有「N tick 一次」这样的节拍常量; 耗时由 TileLaserTableBase 基类与激光供能速率决定,不断言具体数值。

GUI / Container 配对

GUI 类 Container 类 配对处
buildcraft.silicon.gui.GuiAdvancedCraftingTable buildcraft.silicon.gui.ContainerAdvancedCraftingTable silicon/SiliconGuiHandler.java:51

侧面搜索方向

silicon/TileAdvancedCraftingTable.java:53-58:

private static final EnumSet<ForgeDirection> SEARCH_SIDES = EnumSet.of(
        ForgeDirection.DOWN,
        ForgeDirection.NORTH,
        ForgeDirection.SOUTH,
        ForgeDirection.EAST,
        ForgeDirection.WEST);

恰好 5 个方向:DOWN + 四面水平(NORTH/SOUTH/EAST/WEST),唯独不含 UP。 即机器只从下方与四侧拉取建材,不从上方抽取(避免与上方机器的输出槽抢物品)。 ISidedInventory 的 getAccessibleSlotsFromSide 契约在 :460 返回 SLOTS(0–23)。

网络封包

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

相关条目