From 71c206e59cad16474e0fdfbe1511742ce7fdcdf9 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Fri, 25 Jun 2021 15:41:26 +0200 Subject: [PATCH] Update TablistManager --- .../bungeecore/listeners/TablistManager.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/TablistManager.java b/src/de/steamwar/bungeecore/listeners/TablistManager.java index de2c98f..fc5ce7c 100644 --- a/src/de/steamwar/bungeecore/listeners/TablistManager.java +++ b/src/de/steamwar/bungeecore/listeners/TablistManager.java @@ -174,17 +174,10 @@ public class TablistManager extends BasicListener { server = Message.parse("TABLIST_BAU", player); setSlot(i%20, i/20, gray, "§7§l" + server, 1000); i++; - for (ProxiedPlayer p : playerMap.get(server)){ - boolean sameServer = currentServer == p.getServer().getInfo(); - setSlot(i % 20, i / 20, BungeeTabListPlusAPI.getIconFromPlayer(p), getTablistName(p), (sameServer ? 1 : 500)); - i++; - } + i = update(currentServer, playerMap.get(server), i); } - while (i < size*20){ - setSlot(i%20, i/20, darkGray, "", 1000); - i++; - } + finish(i); }catch(IndexOutOfBoundsException | NullPointerException e){ //Ignore IndexOutOfBoundsException //Ignore NPE, happens sometimes (only 1s long) when somebody is joining, server switching or disconnecting @@ -223,23 +216,32 @@ public class TablistManager extends BasicListener { setSlot(i%20, i/20, gray, "§7§l" + server, 1000); i++; - for (ProxiedPlayer p : players){ - boolean sameServer = currentServer == p.getServer().getInfo(); - setSlot(i % 20, i / 20, BungeeTabListPlusAPI.getIconFromPlayer(p), getTablistName(p), (sameServer ? 1 : 500)); - i++; - } + i = update(currentServer, players, i); } - while (i < size*20){ - setSlot(i%20, i/20, darkGray, "", 1000); - i++; - } + finish(i); }catch(IndexOutOfBoundsException | NullPointerException e){ //Ignore IndexOutOfBoundsException //Ignore NPE, happens sometimes (only 1s long) when somebody is joining, server switching or disconnecting } } + private int update(ServerInfo currentServer, List players, int i) { + for (ProxiedPlayer p : players){ + boolean sameServer = currentServer == p.getServer().getInfo(); + setSlot(i % 20, i / 20, BungeeTabListPlusAPI.getIconFromPlayer(p), getTablistName(p), (sameServer ? 1 : 500)); + i++; + } + return i; + } + + private void finish(int i) { + while (i < size*20){ + setSlot(i%20, i/20, darkGray, "", 1000); + i++; + } + } + private Team getTeam(ProxiedPlayer p) { Team team = Team.get(SteamwarUser.get(p).getTeam()); return team.getTeamId() <= 0 ? null : team;