TilePackager

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

注册信息

属性 值 来源
TileEntity 注册名 buildcraft.TilePackager BuildCraftSilicon.java:159
注册类 buildcraft.silicon.TilePackager 同上
所属 modid BuildCraft|Silicon BuildCraftSilicon.java:63
关联方块 Packager 方块,方块类 BlockPackager,注册名 packagerBlock BuildCraftSilicon.java:77 声明、:108-110 注册
父类 TileBuildCraft(不是 TileLaserTableBase) silicon/TilePackager.java:27
实现接口 ISidedInventory 同上
是否配置门控 否(无条件注册) BuildCraftSilicon.java:159

⚠️ 注册名 buildcraft.TilePackager 是不带包名的历史短名(其余 Silicon 机器都带 net.minecraft.src.buildcraft.factory. 前缀)。

槽位数量与布局(两个独立 SimpleInventory)

silicon/TilePackager.java:72-73:

public SimpleInventory inventoryPublic  = new SimpleInventory(12, "Packager", 64);
public SimpleInventory inventoryPattern = new SimpleInventory(9,  "Packager", 64);
字段 槽数 单槽上限 用途
inventoryPublic 12 64 真实物品(输入 0–8、燃料/包装 9、输出 11)
inventoryPattern 9 64 打包模板(3×3 的「包装样式」)

槽位逐个说明(GUI 侧 silicon/gui/ContainerPackager.java:23-55)

槽位 GUI 坐标 类型 用途
9 (124, 7) SlotValidated 燃料 / 能量输入(最靠上,单独一排)
0–8 8 + x*18, 84 Slot 9 格输入区(3×3 一行排开)
— 30 + x*18, 17 + y*18 SlotPackager 9 个模板槽,操作的是 inventoryPattern(独立于上面 12 槽)
11 (123, 59) SlotOutput 输出
玩家热键栏 8 + x*18, 115 + y*18 Slot 9 槽
玩家主背包 8 + x*18, 173 Slot 27 槽

源码缺陷:槽 10 的注册被注释掉了

silicon/gui/ContainerPackager.java:42 原文是注释:

// addSlotToContainer(new Slot(tile, 10, 108, 31));

⚠️ 槽 10 存在于 inventoryPublic(12 槽的索引 10),但从未被加进 Container。

后果:inventoryPublic 的 12 个槽里,槽 10 在 GUI 中不可见、不可点、Shift+点击排序也覆盖不到 (容器实际只绑了 0–9 与 11,共 11 个方块槽)。

对照 silicon/TilePackager.java:70:

private static final int[] SLOTS = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 };

SLOTS 数组恰好 11 个元素,且不含 10 —— 这与上面被注释的槽 10 相互印证: 自动化侧(ISidedInventory)也跳过槽 10(:492 返回 SLOTS)。

⚠ 「把注释掉的代码当注册」是这套 wiki 的已知幻觉模式。 若按 new SimpleInventory(12, ...) 直接断言「12 个可见槽位」即为错误; 实际可见并参与自动化的方块槽是 11 个(0–9、11),槽 10 是一个内部保留槽。

处理速率 / 耗时

updateEntity()(silicon/TilePackager.java:92)。 ⚠️ 本类没有写死「N tick 一次」的节拍常量; 包装速度取决于投入的燃料与 Requirement 匹配逻辑(内部类 Requirement,silicon/TilePackager.java:29, 带 getStack() / decrStackSize(int amount))。 具体速率不写死数字。

GUI / Container 配对

GUI 类 Container 类 配对处
buildcraft.silicon.gui.GuiPackager buildcraft.silicon.gui.ContainerPackager silicon/SiliconGuiHandler.java:86

网络封包

走 TileBuildCraft 基类的 NBT 同步(两个 SimpleInventory 都随 NBT 落盘)。 无独立的 Silicon 专用封包 ID。

相关条目