CraftingNetworkDiagnostics(appeng.me.diagnostics.CraftingNetworkDiagnostics)

基本信息

属性 值
源码 appeng/me/diagnostics/CraftingNetworkDiagnostics.java
类声明行号 17
类型 public final class
内部类 DiagnosticStats(:199,private static final class)
是否缓存 否 —— 不是 IGridCache

职责

按产物维度记录加工产出统计:产出了多少、观测了多久、采样多少次。 供客户端排序 / 搜索展示。

数据结构

Map<IAEStack<?>, DiagnosticStats> —— key 是产物栈,value 是统计量。 DiagnosticStats(:199)至少提供:

方法 被调用处 含义
getTotalProduced() CraftingNetworkDiagnostics.java:129 累计产出
getElapsedObservedTicks() :130 观测时长(tick)
getSampleCount() :131 采样数

写入路径

方法 行号 说明
recordSample(IAEStack<?> output, CraftingDiagnosticSessionId sessionId, ...) 36 记一次产出
completeSession(CraftingDiagnosticSessionId sessionId) 55 结束会话,结算时长
nextSessionId() 23 分配新会话 ID
getSessionCounter() / setSessionCounter(long) 28 / 32 计数器读写

会话 ID 的语义与边界见 me/diagnostics 总览(of(0) 返回 null)。

读取路径

方法 行号 说明
createRows(String search, DiagnosticSortMode sortMode, boolean ascending) 98 排序 + 搜索 → List<DiagnosticRowView>
isEmpty() 90
getRevision() 94 单调修订号

createRows 的三级 tiebreak(:110-122)保证排序确定性: 主键 → 显示名(忽略大小写)→ hashCode。

⚠️ 搜索是 getDisplayName().toLowerCase().contains(...)(:105)—— 子串匹配,不支持通配符 / 正则 / 分词。

清除路径

方法 行号
clear() 70
clear(IAEStack<?> output) 79

持久化

方法 行号 说明
writeToNBT() 136 → NBTTagList
readFromNBT(NBTTagList, boolean merge) 147 merge = true 时与现有数据合并(不是覆盖)

配合 CraftingDiagnosticSessionId 的 fromNBT(:18,先试 TAG_LONG 再试 TAG_STRING)往返。

生命周期钩子

无。不是 IGridCache,不由 Grid 直接调用。 它被 CraftingGridCache 间接使用, 或由 CPU 侧主动提交样本。

相关条目