I don't necisarily support the threads idea, but what you might have to do is have the player determine which input corresponds to what output inside of the condensed block GUI itself. here is what I imagine it to look likeYou say that, yet people learned how to do the same thing with redstone. Redstone required ludicrous setups just to get the logic blocks we already have, which is a big upgrade. I would say something like this is entirely possible. At the least it would be moddable. The issue is allowing a single block to act as if it is multiple inputs and outputs. I have an elevator system that determines when doors open and close based on where the elevator is on the rail. That requires at least 2 inputs. That is where this system gets a bit confusing. Still it is entirely viable if you want to condense a circuit down to a single block, but only if the issues I brought fourth are addressed. I am sure schema would have some input as well.
and code for input and output aliases would look like:
public Class CoallescedConnections
{
public ArrayList<logic_object> logic_reference_array;
public int max_size;
public int logical_size;
CoallescedConnections(int max_numberof_connections = 8)
{
max_size = max_numberof_connections;
logical_size = 0;
}
... // copy constructor, isEquals operator, etc..
//member functions
public void addConnection(logic_object logic_reference)
{
if(logical_size < max_size)
{
logic_reference_array.add(logical_size, logic_reference);
logical_size ++;
}
else
{
throw warning message of some sort to the player
that they will have to remove other connections
before adding newer ones.
}
}
public void removeConnection(int index_of_connection)
{
if(index is within logical_size bounds)
{
logic_reference_array.remove(index);
logical_size --;
}
else
{
//throwing is expensive actually, and the player shouldn't even be capable of doing this.
}
}
... //additional member functions, methods etc.
}
public Class PlayerLogic extends logic_object
{
protected CoallescedConnections input
protected CoallescedConnections output
protected ArrayList<ArrayList<logic_object>> playerLogicGrid;
...
//assumed logic_object methods
onConnectionTo(logic_object logic_reference)
{
input.addConnection(logic_reference);
}
onConnectionFrom(logic_object logic_reference)
{
output.addConnection(logic_reference);
}
onRemoveConnectionTo(int index)
{
input.removeConnection(index);
}
// you get the picture
...
}