Mekanism-tilera-Edition/common/mekanism/api/TransmitterNetworkRegistry.java
2013-08-06 01:40:41 -04:00

89 lines
1.7 KiB
Java

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<ITransmitterNetwork> networks = new HashSet<ITransmitterNetwork>();
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<TickType> type, Object... tickData)
{
return;
}
@Override
public void tickEnd(EnumSet<TickType> type, Object... tickData)
{
Set<ITransmitterNetwork> iterNetworks = (Set<ITransmitterNetwork>)networks.clone();
for(ITransmitterNetwork net : iterNetworks)
{
if(networks.contains(net))
{
net.tick();
}
}
}
@Override
public EnumSet<TickType> ticks()
{
return EnumSet.of(TickType.SERVER);
}
@Override
public String getLabel()
{
return "Mekanism Transmitter Networks";
}
@Override
public String toString()
{
return "Network Registry:\n" + networks;
}
}