
高级装配计算
Neo ECO AE物理向量工艺附属,适用于Forge 1.20.1
高级装配计算
高级装配计算(AAC)是一个 Forge 1.20.1 扩展,它将 AE2 合成优化器(AE2 Crafting Optimizer)的精确合成台交易连接到 Neo ECO AE 扩展的真实合成多方块结构上。
AAC 不是第二个合成规划器。它是物理执行器:
- ACO 负责规划并管理精确的账目。
- AAC 将一个已验证的配方步骤路由至一个 Neo ECO 工作单元。
- Neo ECO 负责真实的线程进度、能量消耗和持久化。
请求数量是一个精确的倍数系数。它不会为每次合成创建一个工作单元、线程、样板推送或 Java 循环。
目标环境
- Minecraft
1.20.1 - Forge
47.4.18+ - Java
17 - 应用能源2(Applied Energistics 2)
15.4.10 - Neo ECO AE 扩展
20.3.0 - AE2 合成优化器
1.5.4 - 高级量子工程(Advanced Quantum Engineering)
2.1.2至2.2.x为可选 - 专用服务器、单人游戏以及作为普通 Forge 模组的 Arclight
客户端和服务器均需同时安装 AE2、Neo ECO、ACO 和 AAC。AQE 不是代码依赖项。仅当存在 AQE 时,AAC 的 AQE 进阶配方才会加载。
新增方块
advanced_assembly_computing:vector_crafting_controlleradvanced_assembly_computing:vector_crafting_parallel_coreadvanced_assembly_computing:vector_crafting_worker
该结构保留了 Neo ECO 原始的外壳、接口、样板总线、通风口、仓口、方向、镜像和尺寸规则。AAC 控制器需要在相应行中放置 AAC 工作单元和 AAC 并行核心;混用 L9 性能部件无法构成上部结构。
执行模型
一次真实合成加上精确系数
对于每个被接受的合成台步骤:
- AAC 从选定的 AE2 样板槽位填充真实的 Neo ECO 线程合成物品栏。
- 它调用样板真实的
assemble一次。 - 它根据编码的样板声明验证实际输出和剩余物品。
- 它验证
单次合成公式 * 精确执行次数是否等于 ACO 的总输入和预期输出映射。 - 它启动一个真实的 Neo ECO 线程。
- Neo ECO 推进真实进度并消耗真实能量。
- 完成后,AAC 将精确乘数后的输出作为持久的 Worker 收据返回。
AAC 仅为一次真实合成触发一次合成事件。它永远不会为每次逻辑执行触发事件。
多阶段树
AAC 不会将整个树折叠为其根输出。ACO 按依赖顺序发送各个配方步骤。
子步骤的输出必须先计入 ACO 的托管账户,然后父步骤才能开始。因此,一个线性的二十阶段链将运行二十个物理阶段。独立的分支可以同时使用不同的工作单元。
Long 与 BigInteger
普通的带符号长整型 AE2 任务和 BigInteger 父任务使用相同的 CraftingTableBatchRequest 和单次合成证明。
AE2_JOB:Neo ECO 和 AE2 保留其正常的 long CPU 核算。BIG_INTEGER_JOB:ACO 保留精确的父任务核算,AAC 仅存储一个代表性的单次合成线程以及精确输出的辅助数据。
AAC 绝不会在 BigInteger 交易上调用 longValue()。它仅对完整计数已被证明适合的路径使用精确转换。
收据安全
Worker 本地的终端分类账存储:
- 交易 UUID;
- 载荷摘要;
- 精确的 BigInteger 输出映射。
Worker 在释放物理线程之前记录此收据。ACO 只对收据入账一次,然后明确删除它。不匹配的载荷、更改的输出、重复的交易、格式错误的 NBT 或超限的分类账都将被拒绝,而不是被覆盖。
在输出完成前的取消仅释放代表性的线程。ACO 拥有真实的输入托管,并决定必须返回什么。
实时交易查找按交易 UUID 索引:
- 样板总线直接将交易解析到其所属的 Worker。
- Worker 将其直接解析到所属的线程。
- 索引仅在重启或结构更改后通过一次有界扫描重建;正常轮询不会重新扫描整个多方块结构。
所有检查过的 long 转换均在冷却液消耗或合成事件发射之前完成。被拒绝的请求永远不会附加到 Worker 的线程列表中。
包含相同物品的九个合成槽位仍然是九个独立的带符号 long 条目。AAC 不会仅仅因为它们的合并 BigInteger 总数超过 Long.MAX_VALUE 而拒绝这种有效形态。
能量与进度
AAC 不会凭空设定整个树的持续时间或固定的能量计划。
progressPerTick控制 Neo ECO 物理线程的进度。powerMultiplier由 AAC 控制器的真实 Neo ECO 能量路径使用。- 默认的
100进度和1能量倍率请求每个活动物理线程消耗100 AE/t。 - 逻辑请求数量不会增加物理线程的数量。
- 每个被接受的配方步骤仍然消耗物理能量并展示物理进度。
配置
文件:
config/advanced_assembly_computing-common.toml
默认值:
[vectorCrafting]
enableVectorExecution = true
physicalThreadsPerWorker = 256
progressPerTick = 100
powerMultiplier = 1
[nativeCraftingTableBatch]
enabled = true
requireExactPatternOwnership = true
maximumExecutionsPerWave = 9223372036854775807
maximumExecutionsPerWave 是一个系数上限,而不是循环次数。每堆叠的带符号 long 安全性可能会减少正常的 AE2 批次。ACO 的精确 BigInteger 父路由不会将此值用作 BigInteger 限制。
ACO 的事务性 V2 路由也必须在两端启用:
[experimentalCraftingEngine]
enableTransactionalBatchingV2 = true
如果它被禁用,AAC 仍然可以加载,但正常的 AE2 任务将回退到 Neo ECO 的物理线程路径。在该回退中,physicalThreadsPerWorker 是吞吐量,而不是逻辑输出系数。
可选的 AQE 配方
当安装了 AQE 时,上部控制器、工作单元和并行核心的配方使用 AQE 终局组件。它们是 Forge 条件配方,因此 AAC 可以在没有 AQE 的情况下加载。
KubeJS 可以正常移除或替换这些配方 ID。
视觉效果
方块状态和物品模型直接引用 Neo ECO L9 模型。AAC 不会复制 Neo ECO 的纹理。AAC 的 BlockItem 添加了正常的附魔闪光效果。
构建
首先构建 ACO 1.5.4,然后:
.\gradlew.bat clean build --no-daemon
输出的 JAR 文件写入 build/libs。
许可证
AAC 使用 GPL-3.0-only 许可证,因为它直接继承并集成了 GPLv3 的 Neo ECO 类。依赖项的源代码、模型和纹理不会被重新分发。
请先将 AAC 的问题报告给本项目。在未使用 AAC 也能复现问题之前,请勿将仅由 AAC 引起的故障报告给 Neo ECO、AE2、ACO 或 AQE。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。