package crazypants.enderio.machine.hypercube; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ClientChannelRegister { static final ClientChannelRegister instance = new ClientChannelRegister(); private final List<Channel> publicChannels = new ArrayList<Channel>(); private final List<Channel> publicChannelsRO = Collections.unmodifiableList(publicChannels); private final List<Channel> privateChannels = new ArrayList<Channel>(); private final List<Channel> privateChannelsRO = Collections.unmodifiableList(privateChannels); void setPublicChannels(List<Channel> channels) { publicChannels.clear(); publicChannels.addAll(channels); } void setPrivateChannels(List<Channel> channels) { privateChannels.clear(); privateChannels.addAll(channels); } public List<Channel> getPublicChannels() { return publicChannelsRO; } public List<Channel> getPrivateChannels() { return privateChannelsRO; } void addChannel(Channel channel) { if(channel == null) { return; } if(channel.isPublic()) { if(!publicChannels.contains(channel)) { publicChannels.add(channel); } } else { if(!privateChannels.contains(channel)) { privateChannels.add(channel); } } } public void channelAdded(Channel channel) { if(channel.isPublic() && !publicChannels.contains(channel)) { publicChannels.add(channel); } } public void reset() { publicChannels.clear(); privateChannels.clear(); } public void channelRemoved(Channel c) { if(c.isPublic()) { publicChannels.remove(c); } else { privateChannels.remove(c); } } }