diff --git a/src/main/java/net/william278/velocitab/packet/ScoreboardManager.java b/src/main/java/net/william278/velocitab/packet/ScoreboardManager.java index 84617cf..b8b1fe2 100644 --- a/src/main/java/net/william278/velocitab/packet/ScoreboardManager.java +++ b/src/main/java/net/william278/velocitab/packet/ScoreboardManager.java @@ -8,18 +8,18 @@ import net.william278.velocitab.Velocitab; import net.william278.velocitab.player.TabPlayer; import org.jetbrains.annotations.NotNull; -import java.util.HashMap; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; public class ScoreboardManager { private final Velocitab plugin; - private final HashMap fauxTeams; + private final ConcurrentHashMap fauxTeams; public ScoreboardManager(@NotNull Velocitab velocitab) { this.plugin = velocitab; - this.fauxTeams = new HashMap<>(); + this.fauxTeams = new ConcurrentHashMap<>(); } public void registerPacket() { @@ -48,14 +48,14 @@ public class ScoreboardManager { public void removeTeam(@NotNull Player member) { final UUID uuid = member.getUniqueId(); - if (!fauxTeams.containsKey(uuid)) { - return; + final String teamName = fauxTeams.getOrDefault(uuid, null); + if (teamName != null) { + final UpdateTeamsPacket removeTeamPacket = UpdateTeamsPacket.remove(teamName); + plugin.getServer().getAllPlayers().stream() + .map(Player::getUniqueId) + .map(Protocolize.playerProvider()::player) + .forEach(protocolPlayer -> protocolPlayer.sendPacket(removeTeamPacket)); } - final UpdateTeamsPacket removeTeamPacket = UpdateTeamsPacket.remove(fauxTeams.get(uuid)); - plugin.getServer().getAllPlayers().stream() - .map(Player::getUniqueId) - .map(Protocolize.playerProvider()::player) - .forEach(protocolPlayer -> protocolPlayer.sendPacket(removeTeamPacket)); fauxTeams.remove(uuid); } diff --git a/src/main/java/net/william278/velocitab/tab/PlayerTabList.java b/src/main/java/net/william278/velocitab/tab/PlayerTabList.java index df0913c..414a82b 100644 --- a/src/main/java/net/william278/velocitab/tab/PlayerTabList.java +++ b/src/main/java/net/william278/velocitab/tab/PlayerTabList.java @@ -60,12 +60,10 @@ public class PlayerTabList { public void updatePlayer(@NotNull TabPlayer tabPlayer) { plugin.getServer().getScheduler() .buildTask(plugin, () -> { - synchronized (this) { - players.remove(tabPlayer); - players.add(tabPlayer); - } - // Update the player's team sorting + players.remove(tabPlayer); + players.add(tabPlayer); + plugin.getScoreboardManager().setPlayerTeam(tabPlayer); updateList();