Skip to content

Latest commit

 

History

History
152 lines (108 loc) · 19.2 KB

COMPACT_ECO_REVIEW.md

File metadata and controls

152 lines (108 loc) · 19.2 KB

紧凑型 ECO 源码对照与单方块交互重做方案

审查日期:2026-10-11。此次按要求先审查并提出方案,没有修改机器功能。

对照前已获取远端更新。Useless 基线为 origin/1.21 的 83dda0f9c9b17bcacf731428449e542169dabd6d;ECO 基线为 origin/main 的 3967d3ddb5f996a2f42125ee35a53302445e9323,源码版本为 21.2.2。辅助核对 AE2 的多方块计算与扳手入口时,也已获取该仓库远端更新,基线为 db17504a86128fdf3dae31f5fb7a112a646e0b93。

范围包括 Useless 紧凑兼容层、网格机器类型映射、已有紧凑层测试,以及 ECO 对应主机、通讯接口、样板预览传输、流体界面与任务持久化入口。结论来自源码和本地编译依赖 JAR 元数据;没有启动客户端或服务器复现。本报告中的“缺口已确认”表示代码路径缺失或不匹配,不表示已经完成游戏内复测。

当前实现的能力与边界

对象 已有实现 单方块的实际组织方式
C9 ECO 计算集群、CPU、线程、并行与存储容量;极限模式拓扑 1 个真实主机加 7 个影子主机;每台装满影子线程核心、并行核心和 CE9 晶阵
F9 ECO 样板解析与派单、FastPath、工作核心、虚拟合成条件、冷却逻辑 1 个真实主机加 7 个影子主机;默认配置下为 88 个 FX、176 条样板总线;数量随 ECO 结构上限变化
L9 ECO 无限存储引擎、无限域、存储优先级、接口搬入/搬出模式 1 个真实存储主机,预装 64 个不可取出的无限组件,没有普通驱动器
菜单 普通右键主机面板;潜行右键通讯接口面板 用菜单 holder 的 useless_interface 状态位区分两个页面,没有把该状态写入世界
F9 样板管理 聚合总线、物理槽与终端槽映射、目录版本通知、外置样板存档 聚合对象有网格节点,内部影子总线保留实际库存与 ECO 操作语义
F9 流体 两个 128,000 mB 共享槽,八台主机共享输入和输出池 六个方向暴露相同处理器;填充进入输入槽,抽取仅来自输出槽
网格发现 映射到 ECO 父类索引;聚合总线避免重复索引 CPU 与样板终端发现依赖这层桥接

底层能力已有可复用基础。主要需要重做的是:玩家从一个方块操作原先分散在主机、通讯接口、样板总线、流体仓、线程核心上的功能,以及这些影子对象的数据如何跟随真实主机保存、恢复和搬运。

差异和缺口

编号 范围 当前差异 处理方向
D01 三种主机的页面入口 只有“主机/接口”两个分支,界面内没有统一导航;物品说明只介绍等价能力,没有说明潜行入口 建立共同页面框架,普通右键进入总览,各管理页可直接切换;保留潜行入口作为快捷操作
D02 多方块建造控件 三个 createUI 都回退到 ECO 原生主机面板;原面板包含长度、镜像、建造预览和建造入口 单方块页面使用专用布局,移除这些操作;用内建硬件和运行状态替代结构建造信息
D03 F9 的 FT 显示 ECO 按 FX 上下相邻坐标查 FT;紧凑 F9 的 FX/FT 都创建在 worldPosition,查不到上下 FT 使用稳定的逻辑主机编号、FX 编号和上下核心编号构造显示状态
D04 F9 任务显示 原面板的 11 格输出图来自本地主机的 worker 列表;紧凑 F9 的其余 7 台主机只进入汇总计数 将八台主机的任务纳入同一列表,按主机或通道分页,并保持总览计数与详细列表一致
D05 F9 样板预览收包 ECO 当前 PATTERNS 分块包在世界坐标查找 ECOMachineInterfaceBlockEntity;该坐标实际是 CompactF9BlockEntity,影子接口接不到包 接通新的预览传输入口,或让紧凑菜单持有自己的接收器;保留版本、会话和分块机制
D06 F9 手持样板操作 直接右键只处理可解码的编码样板,插入结果被压成布尔值;潜行持样板仍会先插入;失败没有具体原因提示 明确普通插入与潜行打开管理页的优先级,展示重复、无位置、不兼容、未就绪等结果
D07 F9 样板磁盘等物品 上游接口插入路径允许总线自行判断磁盘等物品;紧凑方块的直接右键入口只认编码样板 用统一的库存接受规则决定可插入物品,继续尊重物理槽与磁盘内部视图的区别
D08 F9 手动流体操作 有管道能力,但没有独立流体仓页面,也没有方块桶交互 增加冷却页与容器交互,分别展示输入槽、输出槽、内部冷却点和冷却类型
D09 F9 错误冷却液恢复 对外 drain 只抽输出槽;输入槽接受流体后没有对应取回入口 冷却页提供把输入液体取回容器的操作;对错误液体给出实际恢复入口
D10 F9 最新虚拟冷却条件 当前 ECO 默认允许凛冰溶液;自定义流体还需登记且有满足等级和数量的冷却配方。任意高等级冷却液不再自动满足虚拟模式 显示允许流体、配方等级、内部缓冲类型、冷却数量与能量阻塞原因;液体槽与冷却点分别计量
D11 C9/F9 频率按钮 原生频率用于重组逻辑网络;紧凑集群主动忽略外部 setNetworkCluster,内部固定八联网络仍由自己注入 先定义紧凑机的外部组网语义;固定八联拓扑在页面中明确展示,频率操作只能对应实际支持的效果
D12 L9 原生存储面板 仍展示不可取出的组件槽、普通晶阵/驱动器相关内容和 Mega 管理元素;紧凑 L9 没有普通驱动器 展示无限域、内容统计、优先级和搬入/搬出状态;64 个内建组件改为只读说明
D13 结构生命周期 当前 ECO 已提供按实体类型注册计算器的扩展入口,紧凑实现仍以“计算器无法替换”为前提手工成形 接入专用单方块计算器,统一初始化、重算、卸载和拆除路径
D14 C9 任务存档 CPU 状态保存在线程核心上;紧凑 C9 主机只保存主机本身与影子接口,没有保存影子线程核心的 CPU 数据 将各核心的任务数据纳入宿主存档或外置状态存储,按逻辑编号恢复
D15 F9 任务存档 F9 保存样板、两个槽与影子主机状态,没有保存各影子 worker 的 craftingThreads 保存并恢复 FX 的队列、执行状态和剩余物料;恢复后继续使用 ECO 原生任务生命周期
D16 搬运与恢复 已明确接通 F9 样板外置引用和 L9 无限域;F9 两个流体槽、影子接口设置与运行中任务没有统一的便携状态入口 建立统一打包规则;大数据使用引用,普通配置与必要状态随物品恢复
D17 工具、提示与集成 原生 AE2 的扳手/记忆卡入口仍可继承;Jade 的主机 provider 按父类注册可覆盖子类,但影子接口不在世界里,无法作为独立方块被查看 将实际操作说明与当前页面/流体/传输状态归到紧凑主机;工具优先级沿用 AE2,补齐紧凑配置的导出导入范围
D18 编译与验证基线 Useless 的 CurseMaven 文件 8983610 在本地缓存中实际为 ECO 21.2.0;对照的最新源码为 21.2.2;声明最低支持 21.2.0 对齐开发验证依赖与目标 ECO 构建;若使用新 API,验证旧版兼容或同步调整最低版本

需要优先解决的源码问题

样板预览的新传输链路没有接到影子接口。

当前 ECO 的 PatternPreviewSync 用 MenuDataTransport.Channel.PATTERNS 发送预览数据。客户端 MenuDataCodecs 要求 player.level().getBlockEntity(pos) 是通讯接口实体。紧凑方块不满足这个类型判断。Useless 现有 CompactInterfaceAttachment 转发的是 LDLib RPC 和带自定义标记的字段同步,两者都不能替代这条分块数据链路。

这是预览内容不更新或停留在加载状态的一条明确源码原因;具体屏幕表现还需用当前 ECO 构建复现。聚合总线与普通样板终端的库存访问属于另一条链路,不能据此认定所有样板操作都已失效。

证据:ECO 收包条件、ECO 预览发送、现有影子接口转发。

F9 的结构图已经与影子硬件的位置模型不匹配。

ECO 将 FT 的坐标放进映射,再查每个 FX 上方和下方的坐标。紧凑 F9 创建 FX、FT 时都传入主机坐标。因此实际硬件存在,显示模型仍会得到 0 等级的上下槽。详细输出格也只取本地主机的最多 11 个 worker,不能表达完整八联任务分布。

证据:ECO 坐标推导、紧凑 F9 硬件创建。

影子任务对象的持久化没有随宿主一起接通。

ECO 的 C9 CPU 在各线程核心的 saveAdditional/loadTag 中保存恢复,F9 工作队列在 worker 的对应方法中保存恢复。它们在紧凑机里没有真实世界方块,不能依靠普通区块保存独立落盘。C9 的宿主保存方法没有导出核心任务,F9 的宿主保存方法没有导出 worker 队列。F9 保存影子“主机”状态,只保存了控制状态等字段,并没有保存影子“工作核心”的任务。

代码缺口已确认。任务中途保存退出、区块卸载后任务或持有物料的具体损失,需要实测;实施时应先补齐这一链路,再开放完整任务管理和机器搬运。

证据:C9 宿主保存、ECO CPU 保存、F9 宿主保存、ECO worker 保存。

手工成形仍可能遭遇基类直接调用原计算器。

三个紧凑宿主调用 super.onReady(),随后才手工建立单方块集群。当前 ECO 的基类除了立即计算,还通过 executeIfPossible 安排再次直接调用 calculator.calculateMultiblock。这条调用不经过紧凑宿主覆写的 updateMultiBlock/rebuildMultiblock。在回调排队、晚于手工成形执行的时序下,普通计算器仍会按多方块尺寸检查,单方块不通过时走 disconnect。是否触发取决于加载任务的执行时序,需专门复现。

当前 ECO 已有 registerCalculatorFactory,可以为紧凑实体选择专用计算器。现有“final 字段无法替换,只能屏蔽重算”的注释已经不代表当前扩展能力。

证据:ECO 扩展入口与 onReady、紧凑 C9 初始化、AE2 重算与断开。

冷却操作需要同时处理液体与内部缓冲。

目前管道只能取输出池,输入错误流体后没有手动取回入口。ECO 原来的流体输入仓界面支持填入与取出,但紧凑机没有暴露那个页面。另外,取回输入液体不等于清空已经转换到各主机中的冷却点。新页面应把这两种状态分开显示,并提供符合 ECO 消耗规则的缓冲恢复流程。

证据:紧凑流体处理器、ECO 原生输入仓页面、当前允许的虚拟冷却液。

建议的玩家交互

统一用一个单方块菜单,页面按钮始终可见。界面上的“八联”“满配”“内建组件”表达实际能力;不再要求玩家理解不存在于世界里的结构长度与上下位置。

操作 建议行为
普通右键 打开总览,可切换到该机器支持的管理页
潜行空手右键 C9 进入规划页,F9 进入样板页,L9 进入传输页;与目前接口快捷入口保持连续
手持编码样板普通右键 F9 快速插入,返回清楚的结果;成功才扣除物品
潜行持样板右键 F9 打开样板页,避免进入界面前意外插入
持有效磁盘等库存物品操作 F9 由总线的接受规则决定是否插入,保持上游辅助存储语义
持流体容器操作 F9 明确处理输入填充和输出取出;输入液体回收可从冷却页指定操作
持 AE2 记忆卡 沿用 AE2 工具入口;复制机器设置,数据域、样板存档与任务资源按各自持有关系搬运
扳手旋转或潜行拆卸 沿用 AE2 操作,拆卸前完成任务和数据的打包或回收流程
普通非功能物品 沿用正常交互回退行为

页面安排:

机器 页面 主要内容与操作
C9 总览 在线状态、极限能力、使用容量、线程与并行、八联状态
C9 CPU/任务 任务列表、进度、暂停、继续、取消、持有物料
C9 规划 CPU 选择模式、循环规划、快速规划、替代样板策略、63 格模糊物品名单;名单继续使用虚拟样品
F9 总览 八联能力、全部 FX 活跃与队列情况、能量、虚拟模式及阻塞原因
F9 样板 搜索、分页、插入、取出、Shift 操作、整理、迁移、磁盘与辅助存储管理
F9 任务 全部主机/通道的任务与产物、队列、阻塞原因;直接调用 ECO 已有任务操作
F9 冷却 输入/输出液体、容器操作、内部冷却点、缓冲类型、允许液体及恢复提示
F9 设置 超频、主动冷却、规划设置;保留 ECO 执行中的切换限制
L9 总览 无限域标识、内容类型与数量、在线状态、能量、只读内建组件状态
L9 传输 存储/搬入/搬出模式、忽略创造输入、传输速率与状态
L9 设置 优先级、可用的存储策略、恢复状态

F9 的八台内部主机、通道和样板总线应使用稳定逻辑编号显示和保存。编号不依赖真实坐标,也不对玩家暴露影子实体类名。ECO 的容量、队列和能量汇总继续从实际网络对象取值;共享液体池按实际槽计量,避免把同一池因八台引用而重复显示。

L9 当前各面连接同一宿主节点,接口影子也连接该节点,现有搬运使用这个网格。新增方向设置前应明确各面的角色与网络语义;跨网络传输需要单独的节点设计,不能由一个面按钮假装已经支持。

实现组织建议

建议在 Useless 紧凑层增加四项职责:

  1. 页面与输入分派:用明确的页面枚举和菜单会话标识,让客户端和服务端生成相同页面;现有布尔菜单状态可以用于旧快捷入口过渡。
  2. 紧凑显示与动作适配:为 C9/F9/L9 提供实际容量、任务、样板、流体和设置数据,保留 ECO 的服务端操作约束。F9 显示模型按逻辑编号组织。
  3. 菜单同步:接通预览分块接收,建立主机到影子数据对象的明确解析入口。若继续使用 ECO 预览传输,可补一个主机解析接口;若完全由 Useless 持有菜单,则由自己的接收器处理对应状态。大量内容沿用分页、版本和增量同步。
  4. 生命周期与持久化:专用单方块计算器;宿主统一保存影子 CPU/FX 的状态;大数据进入外置存储;移除、卸载、保存退出和放回分别调用正确的 ECO 生命周期。

已有的 CompactPatternProvider、CombinedPatternInventory、聚合总线、网格机器索引和 L9 无限引擎继续作为底层基础。页面重做必须保留 FastPath、磁盘辅助槽、实际物品取放协议、重复样板判断和目录版本通知。L9 的无限域和存储后端继续由 ECO 管理。

实施顺序与验收

阶段 工作 完成条件
1 对齐 ECO 构建;修预览收包;接单方块计算器;补影子任务持久化 正确加载、样板预览有内容,任务保存退出与卸载后可恢复
2 实现共同菜单与 C9 页面,统一普通/潜行/工具分派 页面可达,CPU 管理和规划设置与 ECO 行为一致,没有多方块建造控件
3 实现 F9 总览、全部任务、样板和冷却页面 FT 显示正确,全八联任务可见,样板与容器操作闭合,错误冷却液可恢复
4 实现 L9 页面和三机搬运流程,补提示与集成展示 优先级/传输实际生效,域和设置恢复完整,内建硬件不能被取走
5 使用目标依赖运行验证并检查界面截图 数据、操作和视觉表现都有对应证据

现有紧凑层测试只有三组:聚合样板总线、物理/终端库存映射、F9 流体处理器,共 6 个测试方法。本轮阅读了覆盖范围,没有执行这些测试;它们不能验证菜单打开、当前 ECO 预览收包、影子任务保存或游戏内界面。

实施后重点验证以下行为:

  • 三种机器的普通与潜行入口、页面切换、不同手持物品及扳手/记忆卡的优先级;多人同时操作与菜单关闭后重开。
  • F9 样板在紧凑界面和样板终端之间的同步;普通样板、动态样板、磁盘、重复样板、满库存、整理与迁移;页布局变化后的物理槽身份。
  • F9 液体的模拟与实际填充/取出、空桶/满桶、错误输入回收、输出阻塞;凛冰和自定义合法冷却液;液体槽与内部冷却点恢复。
  • C9/F9 在任务中途保存退出、卸载重载、断网、取消、挖掘与扳手拆卸后的队列和物料;大数量物料采用便携载荷。
  • L9 域标识和内容在搬运后保留,优先级与三种模式实际改变存储行为,内建组件保持只读。
  • 默认与调整过结构上限的 ECO 配置;F9 全八联计数与详情一致;截图检查缩放、页布局、工具提示、槽位和状态图。

验证时分别记录源码基线、测试结果、构建 JAR、运行实例和客户端截图。此次报告只完成了源码审查与设计,不代表上述验收已经通过。