desht / ModularRouters

A Forge Mod for item routers with pluggable modules
16 stars 20 forks source link

[suggestion] Ordered Batch Transfers #110

Closed Nonsanity closed 3 years ago

Nonsanity commented 3 years ago

There are many mods that require a specific sequence of items to be added to an inventory for crafting (Botania and ElementalCraft come to mind), but there are few options to easily automate them. I was thinking about how to make this possible in Modular Routers.

I'm thinking of an augment for a Puller or Sender module that round-robins through the filter. Each time it executes, it only filters on one of the items in its filter, then moves to the next, left-to-right, top-to-bottom. It could have a numeric text box, like the Regulator augment, that shows the next slot to be used, and/or highlights that slot in the filter section.

A related suggestion is a Blocker Augment that prevents a Sender module from sending if the destination has more than N items in it, defaulting to 0. That way it could be set to only send to that inventory if it was empty. This is sort of the opposite of the Regulator augment but would stop a Batch module from sending another batch while the first one is still processing.

Of course, all this is if you are still looking for more features for the mod. :). I'd be happy to help test anything.

desht commented 3 years ago

I quite like the concept of the "Filter Round Robin" augment, though it needs a snappier name...

Not quite understanding how the Blocker Augment differs from the existing regulator functionality though - oh wait, do you mean prevent item transfer entirely rather than limiting the amount? That might be better implemented as a toggleable feature on the Regulator Augment.

boneskull commented 3 years ago

You can sort of mimic this behavior with timed redstone pulses, but it's fiddly since speed/sync upgrades may be needed. Trying to automate Eidolon's Crucible is such a situation; it requires precise timing and specific counts of specific items in a specific order.

l-abels commented 3 years ago

As an alternative to a round-robin option on the filter, the use cases presented here could also be achieved with #31 and a new "match each" option on the filter. The ideal setup would be a single puller module filtered to pick up all of the ingredients for a recipe into multiple buffers, "All or Nothing" style. This would be especially beneficial for Botania, where you never want to drop a partial set of ingredients onto a Runic Altar or Petal Apothecary.

desht commented 3 years ago

I have actually added a filter round robin augment, which you'll see in the 7.4.0 release (hopefully not too far away now). When present in a module, each time the module's ticked, it will match against the next (non-empty) filter item in its filter, cycling back to the first slot after the ninth slot. The router will also save the current roundrobin slot in module NBT, so the slot is remembered across router recompiles (re-inserting the module) and server restarts.

I don't want the router to get very much more powerful (i.e. super-puller module like the above idea), for two reasons:

31 has been open for a long time and TBH I doubt it'll ever get implemented...

desht commented 3 years ago

Filter round robin augment added in 7.4.0