package mekanism.api; import java.util.EnumSet; import java.util.HashSet; import java.util.Set; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; public class TransmitterNetworkRegistry implements ITickHandler { private static TransmitterNetworkRegistry INSTANCE = new TransmitterNetworkRegistry(); private HashSet networks = new HashSet(); public TransmitterNetworkRegistry() { TickRegistry.registerTickHandler(this, Side.SERVER); } public static TransmitterNetworkRegistry getInstance() { return INSTANCE; } public void registerNetwork(ITransmitterNetwork network) { networks.add(network); } public void removeNetwork(ITransmitterNetwork network) { if(networks.contains(network)) { networks.remove(network); } } public void pruneEmptyNetworks() { for(ITransmitterNetwork e : networks) { if(e.getSize() == 0) { removeNetwork(e); } } } @Override public void tickStart(EnumSet type, Object... tickData) { return; } @Override public void tickEnd(EnumSet type, Object... tickData) { Set iterNetworks = (Set) networks.clone(); for(ITransmitterNetwork net : iterNetworks) { if(networks.contains(net)) { net.tick(); } } } @Override public EnumSet ticks() { return EnumSet.of(TickType.SERVER); } @Override public String getLabel() { return "Mekanism Energy Networks"; } @Override public String toString() { return "Network Registry:\n" + networks; } }