Skip to content
This repository has been archived by the owner on Dec 7, 2022. It is now read-only.

Commit

Permalink
Improve tab load time
Browse files Browse the repository at this point in the history
  • Loading branch information
Pablete1234 committed Mar 28, 2016
1 parent c1232cc commit 6d95d9c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);

This comment has been minimized.

Copy link
@twizmwazin

twizmwazin Mar 29, 2016

Owner

I'm not sure that this makes any difference performance wise.

This comment has been minimized.

Copy link
@Pablete1234

Pablete1234 Mar 29, 2016

Author Collaborator

This is part of the 1.9 update fixes the thing where op's that get deoped can't talk in /g etc

}
}
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);
}
}
}
Expand Down
30 changes: 19 additions & 11 deletions src/main/java/in/twizmwaz/cardinal/tabList/TabList.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand All @@ -181,22 +182,26 @@ public void onPlayerChangeSkinParts(PlayerSkinPartsChangeEvent event) {
private void setupPlayer(Player player) {
playerView.put(player, new ArrayList<GameProfile>());
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<UUID, GameProfile> 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<String, GameProfile> 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) {
Expand Down Expand Up @@ -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);
Expand All @@ -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<String> players = action == 0 ? Collections.<String>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<String> players = fakePlayer == null ? Collections.<String>emptyList() : Collections.singletonList(fakePlayer);
PacketPlayOutScoreboardTeam teamPacket = new PacketPlayOutScoreboardTeam(action, team, team, "", "", -1, "never", "never", 0, players);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(teamPacket);
}

Expand Down

0 comments on commit 6d95d9c

Please sign in to comment.