diff --git a/src/main/java/in/twizmwaz/cardinal/module/modules/rank/RankModule.java b/src/main/java/in/twizmwaz/cardinal/module/modules/rank/RankModule.java index 0b64851fd..de29fbf0f 100644 --- a/src/main/java/in/twizmwaz/cardinal/module/modules/rank/RankModule.java +++ b/src/main/java/in/twizmwaz/cardinal/module/modules/rank/RankModule.java @@ -31,16 +31,12 @@ public void onPlayerJoin(PlayerJoinEvent event) { } for (Rank rank : Rank.getRanks(event.getPlayer().getUniqueId())) { for (String permission : rank.getPermissions()) { - if (!event.getPlayer().hasPermission(permission)) { - GameHandler.getGameHandler().getMatch().getModules().getModule(PermissionModule.class).enablePermission(event.getPlayer(), permission); - } + GameHandler.getGameHandler().getMatch().getModules().getModule(PermissionModule.class).enablePermission(event.getPlayer(), permission); } } for (Rank rank : Rank.getRanks(event.getPlayer().getUniqueId())) { for (String permission : rank.getDisabledPermissions()) { - if (event.getPlayer().hasPermission(permission)) { - GameHandler.getGameHandler().getMatch().getModules().getModule(PermissionModule.class).disablePermission(event.getPlayer(), permission); - } + GameHandler.getGameHandler().getMatch().getModules().getModule(PermissionModule.class).disablePermission(event.getPlayer(), permission); } } } diff --git a/src/main/java/in/twizmwaz/cardinal/tabList/TabList.java b/src/main/java/in/twizmwaz/cardinal/tabList/TabList.java index f33eb2ebb..e8a33e013 100644 --- a/src/main/java/in/twizmwaz/cardinal/tabList/TabList.java +++ b/src/main/java/in/twizmwaz/cardinal/tabList/TabList.java @@ -164,6 +164,7 @@ public void onTeamChangeName(TeamNameChangeEvent event) { @EventHandler (priority = EventPriority.HIGHEST) public void onDisplayNameChange(PlayerNameUpdateEvent event) { + if (!playerView.containsKey(event.getPlayer())) return; broadcastTabListPacket(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.UPDATE_DISPLAY_NAME, getPlayer(event.getPlayer()), event.getPlayer().getPlayerListName(), 0); } @@ -181,22 +182,26 @@ public void onPlayerChangeSkinParts(PlayerSkinPartsChangeEvent event) { private void setupPlayer(Player player) { playerView.put(player, new ArrayList()); for (int i = 0; i < 81; i++) { - sendTeamPacket(player, null, i, 0); - } - for (int i = 0; i < 80; i++) { + if (i == 80) { + sendTeamPacket(player, null, i, 0); + continue; + } GameProfile fakePlayer = getFakePlayer(player); - sendTeamPacket(player, fakePlayer.getName(), i, 3); + sendTeamPacket(player, fakePlayer.getName(), i, 0); playerView.get(player).add(fakePlayer); } + PacketPlayOutPlayerInfo listPacket = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER); for (Map.Entry entry : fakePlayer.entrySet()) { - sendTabListPacket(player, PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, entry.getValue(), Bukkit.getPlayer(entry.getKey()).getPlayerListName(), getPlayerPing(Bukkit.getPlayer(entry.getKey()))); + listPacket.add(getPlayerInfo(listPacket, entry.getValue(), Bukkit.getPlayer(entry.getKey()).getPlayerListName(), getPlayerPing(Bukkit.getPlayer(entry.getKey())))); + sendTeamPacket(player, entry.getValue().getName(), 80, 3); } for (Map.Entry entry : teamTitles.entrySet()) { - sendTabListPacket(player, PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, entry.getValue(), getTeamTitle(Teams.getTeamById(entry.getKey()).get()), 1000); + listPacket.add(getPlayerInfo(listPacket, entry.getValue(), getTeamTitle(Teams.getTeamById(entry.getKey()).get()), 1000)); } for (GameProfile emptyPlayer : emptyPlayers) { - sendTabListPacket(player, PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, emptyPlayer, defaultName, 1000); + listPacket.add(getPlayerInfo(listPacket, emptyPlayer, defaultName, 1000)); } + ((CraftPlayer) player).getHandle().playerConnection.sendPacket(listPacket); } private void updateAll(Player prioritized) { @@ -401,11 +406,14 @@ private void broadcastTabListPacket(PacketPlayOutPlayerInfo.EnumPlayerInfoAction private void sendTabListPacket(Player player, PacketPlayOutPlayerInfo.EnumPlayerInfoAction action, GameProfile game, String displayName, int ping) { PacketPlayOutPlayerInfo listPacket = new PacketPlayOutPlayerInfo(action); if (displayName.equals(player.getPlayerListName())) displayName = displayName.replace(player.getName(), ChatColor.BOLD + player.getName()); - PacketPlayOutPlayerInfo.PlayerInfoData playerInfo = listPacket.new PlayerInfoData(game, ping < 0 ? 1000 : ping, WorldSettings.EnumGamemode.SURVIVAL, IChatBaseComponent.ChatSerializer.a("{\"text\":\"" + StringEscapeUtils.escapeJava(displayName) + "\"}")); - listPacket.add(playerInfo); + listPacket.add(getPlayerInfo(listPacket, game, displayName, ping)); ((CraftPlayer) player).getHandle().playerConnection.sendPacket(listPacket); } + private PacketPlayOutPlayerInfo.PlayerInfoData getPlayerInfo(PacketPlayOutPlayerInfo listPacket, GameProfile game, String displayName, int ping) { + return listPacket.new PlayerInfoData(game, ping < 0 ? 1000 : ping, WorldSettings.EnumGamemode.SURVIVAL, IChatBaseComponent.ChatSerializer.a("{\"text\":\"" + StringEscapeUtils.escapeJava(displayName) + "\"}")); + } + private void broadcastTeamPacket(String fakePlayer, int slot, int action) { for (Player player : Bukkit.getOnlinePlayers()) { sendTeamPacket(player, fakePlayer, slot, action); @@ -414,8 +422,8 @@ private void broadcastTeamPacket(String fakePlayer, int slot, int action) { private void sendTeamPacket(Player player, String fakePlayer, int slot, int action) { String team = "\000TabView" + (slot < 10 ? "0" + slot : slot); - Collection players = action == 0 ? Collections.emptyList() : Collections.singletonList(fakePlayer); - PacketPlayOutScoreboardTeam teamPacket = action == 0 ? new PacketPlayOutScoreboardTeam(action, team, team, "", "", -1, "never", "never", 0, players) : new PacketPlayOutScoreboardTeam(new ScoreboardTeam(null, team), players, action); + Collection players = fakePlayer == null ? Collections.emptyList() : Collections.singletonList(fakePlayer); + PacketPlayOutScoreboardTeam teamPacket = new PacketPlayOutScoreboardTeam(action, team, team, "", "", -1, "never", "never", 0, players); ((CraftPlayer) player).getHandle().playerConnection.sendPacket(teamPacket); }