@Override public void onServerSwitch() { for (String player : serverTabList.keySet()) { PlayerListItem pli = new PlayerListItem(); PlayerListItem.Item item = new PlayerListItem.Item(); item.setDisplayName(player); item.setPing(9999); pli.setItems(new PlayerListItem.Item[]{item}); pli.setAction(PlayerListItem.Action.REMOVE_PLAYER); sendPacket(pli); } serverTabListEntryNames.clear(); serverTabList.clear(); } }
@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 onUpdate(PlayerListItem playerListItem) { for ( PlayerListItem.Item item : playerListItem.getItems() ) { if ( playerListItem.getAction() == PlayerListItem.Action.ADD_PLAYER ) { if ( item.getUuid() != null ) { uuids.add( item.getUuid() ); } else { usernames.add( item.getUsername() ); } } else if ( playerListItem.getAction() == PlayerListItem.Action.REMOVE_PLAYER ) { if ( item.getUuid() != null ) { uuids.remove( item.getUuid() ); } else { usernames.remove( item.getUsername() ); } } } player.unsafe().sendPacket( playerListItem ); }
case ADD_PLAYER: for (PlayerListItem.Item item : packet.getItems()) { if (fakePlayerUUIDSet.contains(item.getUuid())) { throw new AssertionError("UUID collision: " + item); if (fakePlayerUsernameSet.contains(item.getUsername())) { throw new AssertionError("Username collision: " + item); serverTabList.put(item.getUuid(), new TabListItem(item)); TabListItem tabListItem = serverTabList.get(item.getUuid()); if (tabListItem != null) { tabListItem.setGamemode(item.getGamemode()); case UPDATE_LATENCY: for (PlayerListItem.Item item : packet.getItems()) { TabListItem tabListItem = serverTabList.get(item.getUuid()); if (tabListItem != null) { tabListItem.setPing(item.getPing()); case UPDATE_DISPLAY_NAME: for (PlayerListItem.Item item : packet.getItems()) { TabListItem tabListItem = serverTabList.get(item.getUuid()); if (tabListItem != null) { tabListItem.setDisplayName(item.getDisplayName()); case REMOVE_PLAYER: for (PlayerListItem.Item item : packet.getItems()) { serverTabList.remove(item.getUuid());
PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(tabListItem.getUuid()); item.setUsername(tabListItem.getUsername()); item.setPing(tabListItem.getPing()); item.setProperties(tabListItem.getProperties()); item.setGamemode(tabListItem.getGamemode()); items.add(item); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(tabListItem.getUuid()); item.setPing(tabListItem.getPing()); items.add(item); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(tabListItem.getUuid()); item.setGamemode(tabListItem.getGamemode()); items.add(item); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(tabListItem.getUuid()); item.setDisplayName(tabListItem.getDisplayName()); items.add(item); clientUsername[slot] = fakePlayerUsernames[slot]; uuidToSlotMap.put(clientUuid[slot], slot); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(clientUuid[slot]); item.setUsername(clientUsername[slot]); item.setPing(clientPing[slot]);
if (clientUuid[index] == fakePlayerUUIDs[index]) { PlayerListItem packet = new PlayerListItem(); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(clientUuid[index]); item.setUsername(clientUsername[index]); item.setPing(ping); item.setDisplayName(text); item.setProperties(skin.getProperties()); packet.setAction(ADD_PLAYER); packet.setItems(new PlayerListItem.Item[]{item});
clientPing[slot] = 0; uuidToSlotMap.put(clientUuid[slot], slot); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(clientUuid[slot]); item.setUsername(clientUsername[slot]); item.setPing(0); item.setDisplayName(EMPTY_CHAT); item.setProperties(EMPTY_PROPRTIES); items[slot - this.size] = item; for (int slot = 0; slot < this.size; slot++) { if (clientUuid[slot] != fakePlayerUUIDs[slot]) { PlayerListItem.Item item = new PlayerListItem.Item(); TabListItem tabListItem = serverTabList.get(clientUuid[slot]); item.setUuid(tabListItem.getUuid()); item.setGamemode(tabListItem.getGamemode()); items[realPlayers++] = item; useFakePlayerForSlot(slot);
PlayerListItem.Item item = items[i++] = new PlayerListItem.Item(); item.setUuid( p.getUniqueId() ); item.setUsername( p.getName() ); item.setDisplayName( ComponentSerializer.toString( TextComponent.fromLegacyText( p.getDisplayName() ) ) ); LoginResult loginResult = ( (UserConnection) p ).getPendingConnection().getLoginProfile(); if ( loginResult != null ) item.setProperties( props ); } else item.setProperties( new String[ 0 ][ 0 ] ); item.setGamemode( ( (UserConnection) p ).getGamemode() ); item.setPing( p.getPing() ); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid( player.getUniqueId() ); item.setUsername( player.getName() ); item.setDisplayName( ComponentSerializer.toString( TextComponent.fromLegacyText( player.getDisplayName() ) ) ); LoginResult loginResult = ( (UserConnection) player ).getPendingConnection().getLoginProfile(); if ( loginResult != null ) item.setProperties( props ); } else item.setProperties( new String[ 0 ][ 0 ] ); item.setGamemode( ( (UserConnection) player ).getGamemode() ); item.setPing( player.getPing() );
Item item = items[ 0 ] = new Item(); item.displayName = item.username = readString( buf ); action = !buf.readBoolean() ? Action.REMOVE_PLAYER : Action.ADD_PLAYER; for ( int i = 0; i < items.length; i++ ) Item item = items[i] = new Item(); item.setUuid( DefinedPacket.readUUID( buf ) ); switch ( action )
UUID uuid = item.getUuid(); UserConnection player = BungeeCord.getInstance().getPlayerByOfflineUUID(uuid); if (player != null) { UUID uuid = rewriteMap.remove(item.getUuid()); modified |= uuid != null; item.setUuid(MoreObjects.firstNonNull(uuid, item.getUuid())); UUID uuid = rewriteMap.get(item.getUuid()); if (uuid != null) { modified = true; if (packet.getAction() == PlayerListItem.Action.ADD_PLAYER) { UserConnection player = BungeeCord.getInstance().getPlayerByOfflineUUID(item.getUuid()); if (player != null) { LoginResult loginResult = player.getPendingConnection().getLoginProfile(); }; item.setProperties(props); } else { item.setProperties(new String[0][0]); item.setUuid(uuid);
PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(tabListItem.getUuid()); item.setUsername(tabListItem.getUsername()); item.setProperties(tabListItem.getProperties()); realPlayers.remove(item.getUuid()); } else if (size - i - (isSpectator ? 1 : 0) > realPlayers.size()) { item.setUuid(fakePlayerUUIDs[i]); item.setUsername(fakePlayerUsernames[i]); item.setProperties(clientSkin[i].getProperties()); } else if (!realPlayers.isEmpty()) { UUID uuid = realPlayers.iterator().next(); realPlayers.remove(uuid); TabListItem tabListItem = serverTabList.get(uuid); item.setUuid(tabListItem.getUuid()); item.setUsername(tabListItem.getUsername()); item.setProperties(tabListItem.getProperties()); } else { TabListItem tabListItem = serverTabList.get(getUniqueId()); item.setUuid(tabListItem.getUuid()); item.setUsername(tabListItem.getUsername()); item.setProperties(tabListItem.getProperties()); item.setGamemode(tabListItem.getGamemode()); item.setPing(clientPing[i]); item.setDisplayName(clientText[i]); clientUuid[i] = item.getUuid(); clientUsername[i] = item.getUsername();
for ( UUID uuid : uuids ) PlayerListItem.Item item = items[i++] = new PlayerListItem.Item(); item.setUuid( uuid ); PlayerListItem.Item item = items[i++] = new PlayerListItem.Item(); item.setUsername( username ); item.setDisplayName( username );
if ( item.getUuid() == null ) // Old style ping UserConnection player = BungeeCord.getInstance().getPlayerByOfflineUUID( item.getUuid() ); if ( player != null ) item.setUuid( player.getUniqueId() ); LoginResult loginResult = player.getPendingConnection().getLoginProfile(); if ( loginResult != null ) }; item.setProperties( props ); } else item.setProperties( new String[ 0 ][ 0 ] ); player.setGamemode( item.getGamemode() );
PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid( con.getUniqueId() ); packet.setItems( new PlayerListItem.Item[]
PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(tabListItem.getUuid()); item.setUsername(tabListItem.getUsername()); item.setPing(clientPing[slot]); item.setDisplayName(clientText[slot]); item.setGamemode(uuid.equals(getUniqueId()) ? tabListItem.getGamemode() : 0); item.setProperties(tabListItem.getProperties()); packet.setItems(new PlayerListItem.Item[]{item}); sendPacket(packet);
for (Map.Entry<String, Integer> entry : serverTabList.entrySet()) { PlayerListItem pli = new PlayerListItem(); PlayerListItem.Item item = new PlayerListItem.Item(); item.setDisplayName(entry.getKey()); item.setPing(entry.getValue()); pli.setItems(new PlayerListItem.Item[]{item}); pli.setAction(PlayerListItem.Action.ADD_PLAYER); for (String player : serverTabList.keySet()) { PlayerListItem pli = new PlayerListItem(); PlayerListItem.Item item = new PlayerListItem.Item(); item.setDisplayName(player); item.setPing(9999); pli.setItems(new PlayerListItem.Item[]{item}); pli.setAction(PlayerListItem.Action.REMOVE_PLAYER);
private void updateSlot(int row, String text, int ping, boolean force) { if (!passThrough) { if (force || ping != clientPing[row]) { PlayerListItem pli = new PlayerListItem(); PlayerListItem.Item item = new PlayerListItem.Item(); item.setDisplayName(slotID[row]); item.setPing(ping); pli.setItems(new PlayerListItem.Item[]{item}); pli.setAction(PlayerListItem.Action.ADD_PLAYER); sendPacket(pli); } if (force || !Objects.equals(text, clientText[row])) { String[] split = splitText(text); Team t = new Team(); t.setName(slotID[row]); t.setMode((byte) 2); t.setPrefix(split[0]); t.setDisplayName(""); t.setSuffix(split[1]); sendPacket(t); } } clientText[row] = text; clientPing[row] = ping; }
private void useFakePlayerForSlot(int slot) { boolean change = clientUuid[slot] != fakePlayerUUIDs[slot]; if (change) { removePlayerFromTeam(slot, clientUuid[slot], clientUsername[slot]); uuidToSlotMap.remove(clientUuid[slot]); } PlayerListItem packet = new PlayerListItem(); packet.setAction(ADD_PLAYER); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid(fakePlayerUUIDs[slot]); item.setUsername(fakePlayerUsernames[slot]); item.setPing(clientPing[slot]); item.setDisplayName(clientText[slot]); item.setGamemode(0); item.setProperties(clientSkin[slot].getProperties()); packet.setItems(new PlayerListItem.Item[]{item}); sendPacket(packet); packet = new PlayerListItem(); packet.setAction(UPDATE_DISPLAY_NAME); packet.setItems(new PlayerListItem.Item[]{item}); sendPacket(packet); clientUsername[slot] = fakePlayerUsernames[slot]; clientUuid[slot] = fakePlayerUUIDs[slot]; uuidToSlotMap.put(clientUuid[slot], slot); if (change) { addPlayerToTeam(slot, clientUuid[slot], clientUsername[slot]); } }
@Override public void onPingChange(int ping) { if ( ping - PING_THRESHOLD > lastPing && ping + PING_THRESHOLD < lastPing ) { lastPing = ping; PlayerListItem packet = new PlayerListItem(); packet.setAction( PlayerListItem.Action.UPDATE_LATENCY ); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid( player.getUniqueId() ); item.setUsername( player.getName() ); item.setDisplayName( ComponentSerializer.toString( TextComponent.fromLegacyText( player.getDisplayName() ) ) ); item.setPing( player.getPing() ); packet.setItems( new PlayerListItem.Item[] { item } ); BungeeCord.getInstance().broadcast( packet ); } } }
@Override public void onPingChange(int ping) { if ( !sentPing ) { sentPing = true; PlayerListItem packet = new PlayerListItem(); packet.setAction( PlayerListItem.Action.UPDATE_LATENCY ); PlayerListItem.Item item = new PlayerListItem.Item(); item.setUuid( player.getUniqueId() ); item.setUsername( player.getName() ); item.setDisplayName( ComponentSerializer.toString( TextComponent.fromLegacyText( player.getDisplayName() ) ) ); item.setPing( player.getPing() ); packet.setItems( new PlayerListItem.Item[] { item } ); BungeeCord.getInstance().broadcast( packet ); } }