Skip to content

Commit 0d938a1

Browse files
committed
Cleanup
Signed-off-by: BT (calcastor/mame) <43831917+calcastor@users.noreply.github.com>
1 parent 639a8d7 commit 0d938a1

2 files changed

Lines changed: 35 additions & 27 deletions

File tree

platform/platform-modern/src/main/java/dev/pgm/community/platform/modern/ModernPlayerUtils.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.net.URI;
1414
import java.net.URISyntaxException;
1515
import java.util.Arrays;
16-
import java.util.Collections;
1716
import java.util.HashMap;
1817
import java.util.List;
1918
import java.util.Map;
@@ -62,12 +61,9 @@ public void setFakeNameAndSkin(
6261
if (!oldName.equals(newName)) {
6362
Team team = viewer.getScoreboard().getEntryTeam(player.getName());
6463
if (team != null) {
65-
// Add both names silently so the correct one is guaranteed present regardless of client
66-
// state, then remove the stale one. sendPacketSilently bypasses handleScoreboardTeam.
67-
sendTeamPacketSilently(
68-
viewer, team.getName(), TeamMode.ADD_ENTITIES, List.of(oldName, newName));
69-
sendTeamPacketSilently(
70-
viewer, team.getName(), TeamMode.REMOVE_ENTITIES, Collections.singletonList(oldName));
64+
// Skip handler in PacketManipulations
65+
sendTeamPacketSilently(viewer, team.getName(), TeamMode.REMOVE_ENTITIES, List.of(oldName));
66+
sendTeamPacketSilently(viewer, team.getName(), TeamMode.ADD_ENTITIES, List.of(newName));
7167
}
7268
}
7369
}

platform/platform-modern/src/main/java/dev/pgm/community/platform/modern/PacketManipulations.java

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,23 @@ public PacketManipulations() {
2929
PacketType.Play.Server.PLAYER_INFO_UPDATE,
3030
this::handlePlayerInfo,
3131
PacketType.Play.Server.TEAMS,
32-
this::handleScoreboardTeam));
32+
this::handleScoreboardTeams));
3333
}
3434

3535
private void handlePlayerInfo(@NonNull PacketSendEvent event) {
3636
Player viewer = event.getPlayer();
37-
WrapperPlayServerPlayerInfoUpdate wrapper = new WrapperPlayServerPlayerInfoUpdate(event);
37+
var wrapper = new WrapperPlayServerPlayerInfoUpdate(event);
38+
39+
var actions = wrapper.getActions();
40+
boolean hasAddPlayer = actions.contains(WrapperPlayServerPlayerInfoUpdate.Action.ADD_PLAYER);
41+
boolean hasUpdateDisplayName =
42+
actions.contains(WrapperPlayServerPlayerInfoUpdate.Action.UPDATE_DISPLAY_NAME);
43+
44+
if (!hasAddPlayer && !hasUpdateDisplayName) return;
3845

3946
boolean modified = false;
40-
List<WrapperPlayServerPlayerInfoUpdate.PlayerInfo> entries = wrapper.getEntries();
41-
for (WrapperPlayServerPlayerInfoUpdate.PlayerInfo entry : entries) {
47+
var entries = wrapper.getEntries();
48+
for (var entry : entries) {
4249
Player player = Bukkit.getPlayer(entry.getProfileId());
4350
if (player == null || player.equals(viewer)) continue;
4451

@@ -47,42 +54,47 @@ private void handlePlayerInfo(@NonNull PacketSendEvent event) {
4754

4855
if (StringUtils.isBlank(playerName) || StringUtils.isBlank(playerDisplayName)) continue;
4956

50-
UserProfile profile = entry.getGameProfile();
51-
profile.setName(playerName);
57+
if (hasAddPlayer) {
58+
UserProfile profile = entry.getGameProfile();
59+
profile.setName(playerName);
60+
61+
Skin skin = PLAYER_UTILS.getPlayerSkin(player, viewer);
62+
profile.getTextureProperties().clear();
63+
profile
64+
.getTextureProperties()
65+
.add(new TextureProperty("textures", skin.getData(), skin.getSignature()));
5266

53-
Skin skin = PLAYER_UTILS.getPlayerSkin(player, viewer);
54-
profile.getTextureProperties().clear();
55-
profile
56-
.getTextureProperties()
57-
.add(new TextureProperty("textures", skin.getData(), skin.getSignature()));
67+
entry.setGameProfile(profile);
68+
}
5869

59-
entry.setGameProfile(profile);
60-
entry.setDisplayName(
61-
LegacyComponentSerializer.legacySection().deserialize(playerDisplayName));
70+
if (hasUpdateDisplayName) {
71+
entry.setDisplayName(
72+
LegacyComponentSerializer.legacySection().deserialize(playerDisplayName));
73+
}
6274

6375
modified = true;
6476
}
6577

6678
if (modified) event.markForReEncode(true);
6779
}
6880

69-
private void handleScoreboardTeam(@NonNull PacketSendEvent event) {
81+
private void handleScoreboardTeams(@NonNull PacketSendEvent event) {
7082
Player viewer = event.getPlayer();
71-
WrapperPlayServerTeams wrapper = new WrapperPlayServerTeams(event);
83+
var wrapper = new WrapperPlayServerTeams(event);
7284

7385
List<String> players = new ArrayList<>(wrapper.getPlayers());
7486
if (players.isEmpty()) return;
7587

7688
boolean modified = false;
77-
for (String name : players) {
78-
Player player = Bukkit.getPlayerExact(name);
89+
for (int i = 0; i < players.size(); i++) {
90+
Player player = Bukkit.getPlayerExact(players.get(i));
7991

8092
if (player == null || player.equals(viewer)) continue;
8193

8294
String playerName = PLAYER_UTILS.getPlayerName(player, viewer);
83-
if (StringUtils.isBlank(playerName) || playerName.equals(name)) continue;
95+
if (StringUtils.isBlank(playerName) || playerName.equals(player.getName())) continue;
8496

85-
players.set(players.indexOf(name), playerName);
97+
players.set(i, playerName);
8698
modified = true;
8799
}
88100

0 commit comments

Comments
 (0)