package universalelectricity.core.grid; import java.util.ArrayList; import java.util.Set; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; /** * Implement this in your network class/interface if you plan to have your own network defined by * specific conductors and acceptors. * * @author aidancbrady * * @param - the class/interface Type value in which you implement this * @param - the class/interface Type which makes up the network's conductor Set * @param - the class/interface Type which makes up the network's acceptor Set */ public interface IGridNetwork { /** * Refreshes and cleans up conductor references of this network, as well as updating the * acceptor set. */ public void refresh(); /** * Gets the Set of conductors that make up this network. * * @return conductor set */ public Set getConductors(); /** * Gets the Set of AVAILABLE acceptors in this network. Make sure this doesn't include any stray * acceptors which cannot accept resources. * * @return available acceptor set */ public Set getAcceptors(); /** * Gets the list of possible connection directions for the provided TileEntity. Tile must be in * this network. * * @param tile The tile to get connections for * @return The list of directions that can be connected to for the provided tile */ public ArrayList getPossibleDirections(TileEntity tile); /** * Creates a new network that makes up the current network and the network defined in the * parameters. Be sure to refresh the new network inside this method. * * @param network - network to merge */ public void merge(N network); /** * Splits a network by the conductor referenced in the parameters. It will then create and * refresh the new independent networks possibly created by this operation. * * @param connection */ public void split(C connection); }