Space-saving feature: multiple readers/writers in the same block
josephcsible opened this issue · 4 comments
Currently, if you want to connect multiple readers/writers to the same block (such as an energy interface and a machine reader), you need to connect each one to its own side. I know that due to CapabilityProxy, running out of sides isn't really an issue, but it's still somewhat ugly and space-inefficient. Could a feature be added to let you put more than one kind of reader/writer in the same space and going to the same block, possibly similar to how Ender IO lets you connect up to 4 different kinds of pipes/cables to the same block?
I've been pondering on this for a long time already in the back of my mind, but I have yet to think of a good and clean solution. Code-wise, this should be very easy to to, the only problem is to how to present this to the player. Add multiple parts on one side? Make one 'super' part that can hold multiple parts? Not sure what would be the best solution...
Something related I intend to implement semi-soon, is the ability to change the target side at a certain block. So you could already target the same side by placing multiple parts at different sides, but configuring them to the same side.
Here's a few approaches I thought of, some just more fleshed-out versions of what you mentioned:
- When holding a reader or writer, each block face is divided into a 3x3 (maybe only 2x2, not sure) grid, and it attaches to (and takes up) whichever space you put it in. Each one is interacted with individually by right-clicking on it, just like now. I like this option.
- Replace all readers and writers with card/module (non-block) versions, and have a single ”connector” block with several slots for them. You'd interact with them by right-clicking the connector, then picking a module from some kind of list. I'm not a big fan of this because it means an extra part for everything that only needs one thing.
- Same as 2, but no modules. The new ”connector” would just have readers and writers inserted into it. This feels kind of arbitrary, though.
- Crafting readers and writers together makes a combined block that is then placed as a unit, and interacted with as in 2 and 3. Crafting it by itself would pop off one module at a time. This feels kind of slow and inefficient, though.
- Remove all readers and writers, replacing them with just a connector block that does it all with no modules needed (so kind of like XNet.) I like this option too.
Idea: Have an interface container: It attaches like all the other interfaces, but you can put in 9 (advanced: 27) interfaces. By default they behave as if they'd be attached to the machine. The container looks like a large crafting interface.
To configure the interfaces, toggle a button in the GUI and each installed interface becomes a button itself to open the nested interface. Also (because all the interface need that) you can drop a variable card on them and it will fill the first appropriate slot (list of items goes to export items).