TileFilteredBuffer
事实基准:
/Users/evlos/a/mirror/BuildCraft(master,minecraftVersion = 1.7.10)逐行读源码。
注册信息
| 属性 | 值 | 来源 |
|---|---|---|
| TileEntity 注册名 | net.minecraft.src.buildcraft.transport.TileFilteredBuffer |
transport/TransportProxy.java:33-35 |
| 注册类 | buildcraft.transport.TileFilteredBuffer |
同上 |
| 所属 modid | BuildCraft|Transport |
BuildCraftTransport.java:193 @Mod |
| 关联方块 | Filtered Buffer 方块 | TransportProxy.java:34 同块 |
| 父类 | TileBuildCraft |
transport/TileFilteredBuffer.java:17 |
| 实现接口 | IInventory |
同上 |
| 是否配置门控 | 否(TransportProxy.registerTileEntities() 无条件调用) |
transport/TransportProxy.java:32-36 |
⚠️ 它的注册不走 BCRegistry.INSTANCE.registerTileEntity,
而是 TransportProxy 里直接 GameRegistry.registerTileEntity(...)(:34),
因为 Transport 模块没有自己的 BCRegistry 调用点。
槽位数量与布局
transport/TileFilteredBuffer.java:19-20:
private final SimpleInventory inventoryFilters = new SimpleInventory(9, "FilteredBufferFilters", 1);
private final SimpleInventory inventoryStorage = new SimpleInventory(9, "FilteredBufferStorage", 64);
两个 9 槽 SimpleInventory,堆叠上限不同:
| 字段 | 槽数 | 单槽上限 | 内部名 | 用途 |
|---|---|---|---|---|
inventoryFilters |
9 | 1 | "FilteredBufferFilters" |
过滤器(3×3,存单个过滤配置物品) |
inventoryStorage |
9 | 64 | "FilteredBufferStorage" |
存储(3×3 真实物品) |
⚠️ 过滤器槽堆叠上限是 1,存储槽是 64——写条目时不能把两者都写成同一上限。
getSizeInventory() 只返回 inventoryStorage 的 9(:33-35),
即 IInventory 契约只暴露 9 个存储槽;9 个过滤器槽是内部字段。
处理速率 / 耗时
无节拍常量。Filtered Buffer 是纯被动容器——只按过滤器内容放行物品,
自己不搬运、不加工,没有 updateEntity 节拍。不断言数字。
GUI / Container 配对
| GUI 类 | Container 类 | 配对处 |
|---|---|---|
buildcraft.transport.gui.GuiFilteredBuffer |
buildcraft.transport.gui.ContainerFilteredBuffer |
transport/TransportGuiHandler.java:97 |
网络封包
走 TileEntity 默认 NBT 同步。无独立的 Transport 专用封包 ID。