Skip to content

Commit 018fbd7

Browse files
committed
nicks wip
1 parent af220c9 commit 018fbd7

1 file changed

Lines changed: 34 additions & 2 deletions

File tree

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

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import com.github.retrooper.packetevents.protocol.player.TextureProperty;
99
import com.github.retrooper.packetevents.protocol.player.UserProfile;
1010
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerPlayerInfoUpdate;
11+
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerTeams;
12+
import java.util.ArrayList;
1113
import java.util.List;
1214
import java.util.Map;
1315
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
@@ -23,7 +25,11 @@ public class PacketManipulations {
2325
public PacketManipulations() {
2426
Packets.register(
2527
PacketListenerPriority.LOWEST,
26-
Map.of(PacketType.Play.Server.PLAYER_INFO_UPDATE, this::handlePlayerInfo));
28+
Map.of(
29+
PacketType.Play.Server.PLAYER_INFO_UPDATE,
30+
this::handlePlayerInfo,
31+
PacketType.Play.Server.TEAMS,
32+
this::handleScoreboardTeam));
2733
}
2834

2935
private void handlePlayerInfo(@NonNull PacketSendEvent event) {
@@ -34,7 +40,7 @@ private void handlePlayerInfo(@NonNull PacketSendEvent event) {
3440
List<WrapperPlayServerPlayerInfoUpdate.PlayerInfo> entries = wrapper.getEntries();
3541
for (WrapperPlayServerPlayerInfoUpdate.PlayerInfo entry : entries) {
3642
Player player = Bukkit.getPlayer(entry.getProfileId());
37-
if (player == null || player.equals(viewer) || !player.isOnline()) continue;
43+
if (player == null || player.equals(viewer)) continue;
3844

3945
String playerDisplayName = PLAYER_UTILS.getPlayerDisplayName(player, viewer);
4046
String playerName = PLAYER_UTILS.getPlayerName(player, viewer);
@@ -59,4 +65,30 @@ private void handlePlayerInfo(@NonNull PacketSendEvent event) {
5965

6066
if (modified) event.markForReEncode(true);
6167
}
68+
69+
private void handleScoreboardTeam(@NonNull PacketSendEvent event) {
70+
Player viewer = event.getPlayer();
71+
WrapperPlayServerTeams wrapper = new WrapperPlayServerTeams(event);
72+
73+
List<String> players = new ArrayList<>(wrapper.getPlayers());
74+
if (players.isEmpty()) return;
75+
76+
boolean modified = false;
77+
for (String name : players) {
78+
Player player = Bukkit.getPlayerExact(name);
79+
80+
if (player == null || player.equals(viewer)) continue;
81+
82+
String playerName = PLAYER_UTILS.getPlayerName(player, viewer);
83+
if (StringUtils.isBlank(playerName) || playerName.equals(name)) continue;
84+
85+
players.set(players.indexOf(name), playerName);
86+
modified = true;
87+
}
88+
89+
if (modified) {
90+
wrapper.setPlayers(players);
91+
event.markForReEncode(true);
92+
}
93+
}
6294
}

0 commit comments

Comments
 (0)