package resonantinduction.core.tilenetwork; import java.util.Set; import net.minecraft.tileentity.TileEntity; /** * Applies to objects that act as a collection of tile entities. * * @author DarkGuardsman */ public interface ITileNetwork { /** Gets the name of the network */ public String getName(); /** Gets a list of all tiles that are part of this network */ public Set getMembers(); /** * Called when something want the network to add the tile * * @param entity - tile in question * @param member - add it as a member if true * @return true if added without issue */ public boolean addTile(TileEntity ent, boolean member); /** Removes a tile from all parts of the network */ public boolean removeTile(TileEntity ent); /** Called when this network is just created */ public void onCreated(); /** How many ticks should base between updates, return 0 or bellow for no ticks */ public int getUpdateRate(); /** Called every so many ticks so the network has a chance to update */ public void updateTick(); /** * Called every so many mins when the networks needs to refresh and repair. Each part should * still handle there own refresh when edited, or updated. This is more for the network to do * house cleaning */ public void refreshTick(); /** Called when two networks try to merge together */ public void mergeNetwork(ITileNetwork network, INetworkPart mergePoint); /** Called when a peace of the network is removed and might need to split in two */ public void splitNetwork(INetworkPart splitPoint); /** Check by the network handle if this network is invalid or no longer functional */ public boolean isInvalid(); /** * This is called when your network is considered invalid. You should cut all ties in the * network to its object so GC will delete it */ public void invalidate(); /** Called when the network needs to save */ public void save(); /** Called when the network needs to load */ public void load(); }