EnergyWatcher(appeng.me.energy.EnergyWatcher)
基本信息
| 属性 | 值 |
|---|---|
| 源码 | appeng/me/energy/EnergyWatcher.java |
| 类声明行号 | 24 |
| 实现接口 | IEnergyWatcher(appeng/api/) |
| 构造器 | :30,(EnergyGridCache cache, IEnergyWatcherHost host) |
职责
「一台设备关心的能量阈值」的持有者,外加回调转发。
双重身份
⚠️ 本类有两个容易混淆的身份:
| 身份 | 方法集 | 元素类型 |
|---|---|---|
IEnergyWatcher |
post(EnergyGridCache)(:35)、getHost()(:39) |
— |
| 集合 | size :44 / isEmpty :49 / contains :54 / iterator :59 / toArray :64 :69 / add(Double) :74 / remove :84 / containsAll :90 / addAll :95 |
Double(阈值) |
源码里没有 implements Set<Double> 声明,但集合方法集是完整的。
add(Double e)(:74)加的是阈值,不是 watcher。
与 EnergyThreshold 的关系
EnergyThreshold(me/energy/EnergyThreshold.java:16)把
(double 阈值, IEnergyWatcher 归属) 打成一对。设备登记阈值时
通常同时做两件事:往本类(集合)加一个 Double,
并让 EnergyThreshold 记住该归哪个 watcher。
⚠️ 具体登记逻辑在 EnergyGridCache 与设备 tile 侧,
me/energy/ 包内没有编排代码。
生命周期
| 阶段 | 位置 |
|---|---|
| 创建 | 设备 tile 构造时(收 EnergyGridCache 与 IEnergyWatcherHost) |
| 触发 | EnergyGridCache 检测到跨档时调 post(...)(:35) |
| 释放 | 设备 tile 卸载 |
本类不是 IGridCache,没有 onUpdateTick / addNode / removeNode
等网格钩子。