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:
Requested quantity is an exact multiplication coefficient. It does not create one Worker, Thread, Pattern push, or Java loop per craft.
1.20.147.4.18+1715.4.1020.3.01.5.42.1.2 through 2.2.x is optionalAE2, 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_workerThe 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:
assemble once.one-craft formula * exact executions equals ACO's aggregate input and expected output maps.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:
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:
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.
progressPerTick controls Neo ECO physical Thread progress.powerMultiplier is used by the AAC controller's real Neo ECO power path.100 progress and 1 power multiplier request 100 AE/t per active physical Thread.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.