Advanced Assembly Computing (AAC) is a Forge 1.20.1 add-on that connects AE2 Crafting Optimizer's exact crafting-table transactions to Neo ECO AE Extension's real crafting multiblock.
AAC is not a second crafting planner. It is the physical executor:
- ACO plans and owns exact accounting.
- AAC routes one proven recipe step to a Neo ECO Worker.
- Neo ECO owns real Thread progress, power, and persistence.
Requested quantity is an exact multiplication coefficient. It does not create one Worker, Thread, Pattern push, or Java loop per craft.
- Minecraft
1.20.1 - Forge
47.4.18+ - Java
17 - Applied Energistics 2
15.4.10 - Neo ECO AE Extension
20.3.0 - AE2 Crafting Optimizer
1.5.4 - Advanced Quantum Engineering
2.1.2through2.2.xis optional - Dedicated server, singleplayer, and Arclight as a normal Forge mod
AE2, Neo ECO, ACO, and AAC are required on both client and server. AQE is not a code dependency. AAC's AQE progression recipes load only when AQE is present.
advanced_assembly_computing:vector_crafting_controlleradvanced_assembly_computing:vector_crafting_parallel_coreadvanced_assembly_computing:vector_crafting_worker
The structure keeps Neo ECO's original casing, interface, Pattern Bus, vent, hatches, orientation, mirroring, and size rules. An AAC controller requires AAC workers and AAC parallel cores in the corresponding rows; mixing L9 performance parts does not form the upper structure.
For each accepted crafting-table step:
- AAC fills a real Neo ECO Thread crafting inventory from the selected AE2 Pattern slots.
- It calls the Pattern's real
assembleonce. - It verifies the actual output and remaining items against the encoded Pattern declaration.
- It verifies that
one-craft formula * exact executionsequals ACO's aggregate input and expected output maps. - It starts one real Neo ECO Thread.
- Neo ECO advances real progress and consumes real power.
- On completion, AAC returns the exact multiplied output as a durable Worker receipt.
AAC fires one crafting event for the one real assemble. It never fires events once per logical execution.
AAC does not collapse an entire tree to its root output. ACO sends individual recipe steps in dependency order.
A child step's output must be credited to ACO escrow before its parent step can start. A linear twenty-stage chain therefore runs twenty physical stages. Independent branches can use different Workers simultaneously.
Normal signed-long AE2 jobs and BigInteger parent jobs use the same CraftingTableBatchRequest and one-assemble proof.
AE2_JOB: Neo ECO and AE2 retain their normal long CPU accounting.BIG_INTEGER_JOB: ACO retains exact parent accounting and AAC stores only a representative one-craft Thread plus exact output sidecar.
AAC never calls longValue() on a BigInteger transaction. It uses exact conversion only for a path whose complete counts were already proven to fit.
The Worker-local terminal ledger stores:
- transaction UUID;
- payload digest;
- exact BigInteger output map.
The Worker records this receipt before releasing the physical Thread. ACO credits the receipt once and then explicitly deletes it. A mismatched payload, changed output, duplicate transaction, malformed NBT, or over-limit ledger is rejected rather than overwritten.
Cancellation before output completion releases only the representative Thread. ACO owns the real input escrow and decides what must be returned.
Live transaction lookup is indexed by transaction UUID:
- Pattern Bus resolves a transaction directly to its owning Worker.
- Worker resolves it directly to its owning Thread.
- The indexes are rebuilt with one bounded scan only after restart or structure change; normal polling does not rescan the full multiblock.
All checked-long conversions are completed before coolant consumption or crafting-event emission. A rejected request is never appended to the Worker's Thread list.
Nine crafting slots containing the same key remain nine independent signed-long entries. AAC does not reject that valid shape merely because their merged BigInteger total exceeds Long.MAX_VALUE.
AAC does not invent a tree-wide duration or fixed energy schedule.
progressPerTickcontrols Neo ECO physical Thread progress.powerMultiplieris used by the AAC controller's real Neo ECO power path.- The default
100progress and1power multiplier request100 AE/tper active physical Thread. - Logical requested quantity does not multiply the number of physical Threads.
- Every accepted recipe step still consumes physical power and exposes physical progress.
File:
config/advanced_assembly_computing-common.toml
Defaults:
[vectorCrafting] enableVectorExecution = true physicalThreadsPerWorker = 256 progressPerTick = 100 powerMultiplier = 1 [nativeCraftingTableBatch] enabled = true requireExactPatternOwnership = true maximumExecutionsPerWave = 9223372036854775807
maximumExecutionsPerWave is a coefficient ceiling, not a loop count. Per-stack signed-long safety may reduce the normal AE2 batch. ACO's exact BigInteger parent route does not use this value as a BigInteger clamp.
ACO's transactional V2 route must also be enabled on both sides:
[experimentalCraftingEngine] enableTransactionalBatchingV2 = true
If it is disabled, AAC remains loadable but normal AE2 jobs fall back to Neo ECO's physical-thread path. In that fallback, physicalThreadsPerWorker is throughput rather than the logical output coefficient.
The upper controller, worker, and parallel-core recipes use AQE endgame components when AQE is installed. They are Forge-conditional recipes, so AAC can load without AQE.
KubeJS may remove or replace these recipe IDs normally.
Blockstates and item models reference Neo ECO L9 models directly. AAC does not copy Neo ECO textures. AAC BlockItems add the normal enchantment glint.
Build ACO 1.5.4 first, then:
.\gradlew.bat clean build --no-daemon
The output JAR is written to build/libs.
AAC is licensed under GPL-3.0-only because it directly subclasses and integrates with GPLv3 Neo ECO classes. Dependency source, models, and textures are not redistributed.
Report AAC issues to this project first. Do not report an AAC-only failure to Neo ECO, AE2, ACO, or AQE until it reproduces without AAC.

