Creating one of these will probably be a common rite of passage. This is what I came up with after a few days.
The crafting requests goes from left to right on the green wire on the power poles, along with a count of inactive machines. The item currently crafting goes out on the red power pole wire. A selector combinator picks out the machine's index to latch in a craft request for one item. This is then sent to the crafter and to the red output wire. The ingredients signal is sent to a requester chest.
The leftmost green wire should be hooked up to a roboport in logistics requests mode, which means that missing ingredients will be requested recursively. Due to latency in the return signal to inhibit repeat crafts, it should be clocked to only pulse the requests every 30 ticks or so. I have not tested sending negative signals. It doesn't handle when a recipe produces two items, like sticks or wires, so might leave leftovers in those cases.
The red output wire is supposed to be hooked up to inhibit crafting of already crafting items, or at least to limit the number of currently crafting items. The system here is left as an exercise for the reader. Multiplying it with -100M to only craft one kind at a time works, but is horribly slow. Multiplying with -1 fills up all the machines if you request, say, 500 of one item, leaving none for its prerequisites. Having directly requested items restricted to N crafts at a time, but having their requirements unrestricted, might work. You can always just build more automall crafters. Uncraftable items, like those requiring fluids or special machines, should have a constant combinator signal of -100M on the input wire. It of course functions best when hooked up to a belt bus with common prerequisites.
Peculiarities and notes:
- It waits for all the items to arrive before they are loaded, as minimizing waste was a design goal and I didn't attempt working with both crafter ingredient output and contents output at the same time. It's slow, though.
- The combinators chained at the top function as a global reset. Pulse R=1 on the green wire to reset all machines.
- Building in a zig-zag pattern with the next row going upside down works well. See image. Hook up the green wire on the reset combinators and the red and green wires on the power poles at the edge.
- Probably pairs well with a normal bot mall, using this for the expensive one-offs and helping with peak load. Vanilla might not have enough expensive one-offs to justify it.
Ideas for improvements:
- If crafting with a fluid, send a barrel empty recipe to the automall crafter in the row above or below.
- Crafting more than one item at a time on the crafter would greatly speed it up, amortizing bot fetch time and increasing dependency parallelization.
I probably won't implement these because it will ruin the small footprint.
