package net.md_5.bungee.tab; import java.util.Collection; import java.util.HashSet; import java.util.UUID; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.protocol.packet.PlayerListItem; public class ServerUnique extends TabList { private final Collection<UUID> uuids = new HashSet<>(); public ServerUnique(ProxiedPlayer player) { super( player ); } @Override public void onUpdate(PlayerListItem playerListItem) { for ( PlayerListItem.Item item : playerListItem.getItems() ) { if ( playerListItem.getAction() == PlayerListItem.Action.ADD_PLAYER ) { uuids.add( item.getUuid() ); } else if ( playerListItem.getAction() == PlayerListItem.Action.REMOVE_PLAYER ) { uuids.remove( item.getUuid() ); } } player.unsafe().sendPacket( playerListItem ); } @Override public void onPingChange(int ping) { } @Override public void onServerChange() { PlayerListItem packet = new PlayerListItem(); packet.setAction( PlayerListItem.Action.REMOVE_PLAYER ); PlayerListItem.Item[] items = new PlayerListItem.Item[ uuids.size() ]; int i = 0; for ( UUID uuid : uuids ) { PlayerListItem.Item item = items[i++] = new PlayerListItem.Item(); item.setUuid( uuid ); } packet.setItems( items ); player.unsafe().sendPacket( packet ); uuids.clear(); } @Override public void onConnect() { } @Override public void onDisconnect() { } }