MEInventoryHandler(appeng.me.storage.MEInventoryHandler)

基本信息

属性 值
源码 appeng/me/storage/MEInventoryHandler.java
类声明行号 37
实现接口 appeng.api.util.IMEInventoryHandler<T>
泛型约束 T extends IAEStack<T>
构造器 :52,两个参数 (IMEInventory<T> i, IAEStackType<T> type)

职责

AE2 里最常用的 handler 基类。它把「被包装的 IMEInventory」与 「访问策略」两层分开:搬运全部委托给被包装对象,策略由本类持有。

访问策略四件套

概念 getter setter 语义
白名单 / 黑名单 getWhitelist() :66 setWhitelist(IncludeExclude) :70 哪些内容允许进出
基础访问权限 getBaseAccess() :74 setBaseAccess(AccessRestriction) :78 READ / WRITE / 无限制
注入分区 getPartitionList() :93 setPartitionList(...) :97 注入落到哪台机器
抽取分区 getExtractPartitionList() :85 setExtractPartitionList(...) :89 抽取从哪台机器

IncludeExclude 与 AccessRestriction 枚举定义在 appeng/api/(不在本分片)。

搬运方法

方法 行号
injectItems(T, Actionable, BaseActionSource) 102
extractItems(T, Actionable, BaseActionSource) 112
getAvailableItems(IItemList<T>, int) 128
getAvailableItems(IItemList<T>, int, Optional<Predicate<T>>) 133
getAvailableItemsFilter(IItemList<T>, int) 156,protected
isVisible() 150

三个子类

子类 源文件:行 额外职责
CellInventoryHandler<T> CellInventoryHandler.java:30 cell 格式化状态、字节 / 类型记账
StorageBusInventoryHandler<T> StorageBusInventoryHandler.java:15 优先级列表 getAvailableItemsWithPriority(:63)
ItemCellInventoryHandler / FluidCellInventoryHandler :17 / :19 物品 / 流体 cell 的 tag 与 channel

getAvailableItemsFilter 是扩展点

protected(:156)—— 子类在此叠加自己的过滤(如 cell 的模糊模式、 存储总线的优先级),基类负责统一调度。StorageBusInventoryHandler 覆写的是公开的 getAvailableItems 两个重载(:22 / :27), 路径与 CellInventoryHandler 不同,两条路都通。

生命周期钩子

无。不是 IGridCache。handler 由外部(cell 自身、存储总线 part、 外部存储接口)在挂载 / 卸载时创建与销毁。

相关条目