MEMonitorIInventory(appeng.me.storage.MEMonitorIInventory)

基本信息

属性 值
源码 appeng/me/storage/MEMonitorIInventory.java
类声明行号 41
实现接口 appeng.api.storage.IStorageBusMonitor<IAEItemStack>
构造器 :54,单参 InventoryAdaptor adaptor
流体版 MEMonitorIFluidHandler.java:43(收 IFluidHandler)

职责

把普通容器(原版 IInventory,经 InventoryAdaptor 做单位换算) 包装成带观察者通知与 tick 调制的 handler。存储总线与接口 part 想 「接一个箱子」时走的就是这条路。

与「真正的 IInventory」的区别

⚠️ 名称容易误导:IInventory 在此不是 net.minecraft.inventory.IInventory 的直通,而是经 InventoryAdaptor(appeng/helpers/,不在本分片) 转换后的 AE 抽象。单位换算(1 桶 = 1250 mB 之类)由 adaptor 负责。

关键方法

方法 行号 说明
addListener(IMEMonitorHandlerReceiver, Object token) 60
removeListener(IMEMonitorHandlerReceiver) 65
injectItems(IAEItemStack, Actionable, BaseActionSource) 70
extractItems(IAEItemStack, Actionable, BaseActionSource) 94
getAvailableItems(IItemList, int) — 签名由接口提供
getChannel() 120 @Nullable StorageChannel
onTick() 125 返回 TickRateModulation
getAccess() 234
isPrioritized(IAEItemStack) 239
canAccept(IAEItemStack) 244
getPriority() 249
getSlot() 254
validForPass(int) 259

onTick() 返回 TickRateModulation

这是自适应节流:容器没变化就降频,有变化就升频。 它与网格级的 TickManagerCache 是两套独立的节流 —— 后者调的是节点 tick 频率,前者调的是单个 handler 的轮询频率。

MEMonitorIFluidHandler.onTick() 在 :159,结构相同。

生命周期钩子

无。不是 IGridCache。生命周期跟随所包装的容器。

与既有维度的关系

相关条目