diff --git a/src/de/steamwar/bungeecore/tablist/Tablist.java b/src/de/steamwar/bungeecore/tablist/Tablist.java index ad400cb7..338a38d1 100644 --- a/src/de/steamwar/bungeecore/tablist/Tablist.java +++ b/src/de/steamwar/bungeecore/tablist/Tablist.java @@ -110,6 +110,7 @@ public class Tablist extends MessageToMessageDecoder { // Main list handling int i = 0; List add = new ArrayList<>(); + List remove = new ArrayList<>(); for (; i < tablist.size() && i < 80; i++) { PlayerListItem.Item tabItem; if(current.size() > i) { @@ -128,20 +129,23 @@ public class Tablist extends MessageToMessageDecoder { tabItem.setProperties(item.getProperties()); tabItem.setDisplayName(item.getDisplayName()); add.add(tabItem); + if(current.size() > i) { + remove.add(tabItem); + } } else if(!item.getDisplayName().equals(tabItem.getDisplayName())) { tabItem.setDisplayName(item.getDisplayName()); update.add(tabItem); } } - sendTabPacket(update, PlayerListItem.Action.UPDATE_DISPLAY_NAME); - sendTabPacket(add, PlayerListItem.Action.ADD_PLAYER); // Excess removal - List remove = new ArrayList<>(); while(i < current.size()) { remove.add(current.remove(i)); } + sendTabPacket(remove, PlayerListItem.Action.REMOVE_PLAYER); + sendTabPacket(update, PlayerListItem.Action.UPDATE_DISPLAY_NAME); + sendTabPacket(add, PlayerListItem.Action.ADD_PLAYER); } public void onServerSwitch() {