@@ -5,12 +5,12 @@ Subject: [PATCH] Dont show spectator players in tablist
55
66
77diff --git a/net/minecraft/server/level/ServerPlayerGameMode.java b/net/minecraft/server/level/ServerPlayerGameMode.java
8- index 02c02314a4a6a7a6da427f0d064dbc61ce92301d..2a0385f0c7f99ac960982211fd2b85c154db7487 100644
8+ index 599d6a4f31e05369caf3ef9f5e54e83396743ec0..3bf5bef7bfd919b4decd26c52e1c3dc4499f1a4d 100644
99--- a/net/minecraft/server/level/ServerPlayerGameMode.java
1010+++ b/net/minecraft/server/level/ServerPlayerGameMode.java
11- @@ -75 ,10 +75 ,16 @@ public class ServerPlayerGameMode {
12- // CraftBukkit end
13- this.setGameModeForPlayer(gameModeForPlayer, this.gameModeForPlayer); // Paper - Fix MC-259571
11+ @@ -86 ,10 +86 ,16 @@ public class ServerPlayerGameMode {
12+ }
13+
1414 this.player.onUpdateAbilities();
1515- this.level
1616- .getServer()
@@ -30,76 +30,76 @@ index 02c02314a4a6a7a6da427f0d064dbc61ce92301d..2a0385f0c7f99ac960982211fd2b85c1
3030 if (gameModeForPlayer == GameType.CREATIVE) {
3131 this.player.resetCurrentImpulseContext();
3232diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
33- index b8356e6719c17020627a693f62e70c2ae066e5ea..2d0d8bd3cf88a45361e0fee819e488ff1dec8816 100644
33+ index 540a073f7738055f7d4eb0175ef1e5999c2d81e8..d8a15cbdfda6ad04b450c18e456460d2804c6770 100644
3434--- a/net/minecraft/server/players/PlayerList.java
3535+++ b/net/minecraft/server/players/PlayerList.java
36- @@ -496 ,6 +496 ,25 @@ public abstract class PlayerList {
37- // CraftBukkit start - sendAll above replaced with this loop
38- ClientboundPlayerInfoUpdatePacket packet = ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player)); // Paper - Add Listing API for Player
36+ @@ -266 ,6 +266 ,25 @@ public abstract class PlayerList {
37+ // CraftBukkit start - sendAll above replaced with this loop
38+ ClientboundPlayerInfoUpdatePacket packet = ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player)); // Paper - Add Listing API for Player
3939
40- + // Deepslate start - Don't send spectator mode packets to other players
41- + ClientboundPlayerInfoUpdatePacket modifiedPacket = null;
42- + if (!de.pascalpex.deepslatemc.files.Config.getSendSpectatorModePackets()) {
43- + ClientboundPlayerInfoUpdatePacket.Entry entry = packet.entries().getFirst();
44- + ClientboundPlayerInfoUpdatePacket.Entry entryWithoutSpectator = new ClientboundPlayerInfoUpdatePacket.Entry(
45- + entry.profileId(),
46- + entry.profile(),
47- + entry.listed(),
48- + entry.latency(),
49- + entry.gameMode() == net.minecraft.world.level.GameType.SPECTATOR ? net.minecraft.world.level.GameType.SURVIVAL : entry.gameMode(),
50- + entry.displayName(),
51- + entry.showHat(),
52- + entry.listOrder(),
53- + entry.chatSession());
40+ + // Deepslate start - Don't send spectator mode packets to other players
41+ + ClientboundPlayerInfoUpdatePacket modifiedPacket = null;
42+ + if (!de.pascalpex.deepslatemc.files.Config.getSendSpectatorModePackets()) {
43+ + ClientboundPlayerInfoUpdatePacket.Entry entry = packet.entries().getFirst();
44+ + ClientboundPlayerInfoUpdatePacket.Entry entryWithoutSpectator = new ClientboundPlayerInfoUpdatePacket.Entry(
45+ + entry.profileId(),
46+ + entry.profile(),
47+ + entry.listed(),
48+ + entry.latency(),
49+ + entry.gameMode() == net.minecraft.world.level.GameType.SPECTATOR ? net.minecraft.world.level.GameType.SURVIVAL : entry.gameMode(),
50+ + entry.displayName(),
51+ + entry.showHat(),
52+ + entry.listOrder(),
53+ + entry.chatSession());
5454+
55- + modifiedPacket = new ClientboundPlayerInfoUpdatePacket(packet.actions(), List.of(entryWithoutSpectator));
56- + }
57- + // Deepslate end - Don't send spectator mode packets to other players
55+ + modifiedPacket = new ClientboundPlayerInfoUpdatePacket(packet.actions(), List.of(entryWithoutSpectator));
56+ + }
57+ + // Deepslate end - Don't send spectator mode packets to other players
5858+
59- final List<ServerPlayer> onlinePlayers = Lists.newArrayListWithExpectedSize(this.players.size() - 1); // Paper - Use single player info update packet on join
60- for (int i = 0; i < this.players.size(); ++i) {
61- ServerPlayer entityplayer1 = (ServerPlayer) this.players.get(i);
62- @@ -504,7 +523,13 @@ public abstract class PlayerList {
63- // Paper start - Add Listing API for Player
64- if (entityplayer1.getBukkitEntity().isListed(bukkitPlayer)) {
65- // Paper end - Add Listing API for Player
66- - entityplayer1.connection.send(packet);
67- + // Deepslate start - Don't send spectator mode packets to other players
68- + if (de.pascalpex.deepslatemc.files.Config.getSendSpectatorModePackets() || entityplayer1 == player) {
69- + entityplayer1.connection.send(packet);
70- + } else {
71- + entityplayer1.connection.send(modifiedPacket);
72- + }
73- + // Deepslate end - Don't send spectator mode packets to other players
74- // Paper start - Add Listing API for Player
75- } else {
76- entityplayer1.connection.send(ClientboundPlayerInfoUpdatePacket.createSinglePlayerInitializing(player, false));
77- @@ -520,7 +545,27 @@ public abstract class PlayerList {
78- }
79- // Paper start - Use single player info update packet on join
80- if (!onlinePlayers.isEmpty()) {
81- - player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(onlinePlayers, player)); // Paper - Add Listing API for Player
82- + // Deepslate start - Don't send spectator mode packets to other players
83- + ClientboundPlayerInfoUpdatePacket updatePacket = ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(onlinePlayers, player);
84- + if (!de.pascalpex.deepslatemc.files.Config.getSendSpectatorModePackets()) {
85- + List<ClientboundPlayerInfoUpdatePacket.Entry> newEntries = new java.util.ArrayList<>();
86- + for (ClientboundPlayerInfoUpdatePacket.Entry entry : updatePacket.entries()) {
87- + ClientboundPlayerInfoUpdatePacket.Entry newEntry = new ClientboundPlayerInfoUpdatePacket.Entry(
88- + entry.profileId(),
89- + entry.profile(),
90- + entry.listed(),
91- + entry.latency(),
92- + entry.gameMode() == net.minecraft.world.level.GameType.SPECTATOR ? net.minecraft.world.level.GameType.SURVIVAL : entry.gameMode(),
93- + entry.displayName(),
94- + entry.showHat(),
95- + entry.listOrder(),
96- + entry.chatSession());
97- + newEntries.add(newEntry);
59+ final List<ServerPlayer> onlinePlayers = Lists.newArrayListWithExpectedSize(this.players.size() - 1); // Paper - Use single player info update packet on join
60+ for (int i = 0; i < this.players.size(); ++i) {
61+ ServerPlayer entityplayer1 = (ServerPlayer) this.players.get(i);
62+ @@ -274,7 +293,13 @@ public abstract class PlayerList {
63+ // Paper start - Add Listing API for Player
64+ if (entityplayer1.getBukkitEntity().isListed(bukkitPlayer)) {
65+ // Paper end - Add Listing API for Player
66+ - entityplayer1.connection.send(packet);
67+ + // Deepslate start - Don't send spectator mode packets to other players
68+ + if (de.pascalpex.deepslatemc.files.Config.getSendSpectatorModePackets() || entityplayer1 == player) {
69+ + entityplayer1.connection.send(packet);
70+ + } else {
71+ + entityplayer1.connection.send(modifiedPacket);
9872+ }
99- + updatePacket = new ClientboundPlayerInfoUpdatePacket(updatePacket.actions(), newEntries);
73+ + // Deepslate end - Don't send spectator mode packets to other players
74+ // Paper start - Add Listing API for Player
75+ } else {
76+ entityplayer1.connection.send(ClientboundPlayerInfoUpdatePacket.createSinglePlayerInitializing(player, false));
77+ @@ -290,7 +315,27 @@ public abstract class PlayerList {
78+ }
79+ // Paper start - Use single player info update packet on join
80+ if (!onlinePlayers.isEmpty()) {
81+ - player.connection.send(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(onlinePlayers, player)); // Paper - Add Listing API for Player
82+ + // Deepslate start - Don't send spectator mode packets to other players
83+ + ClientboundPlayerInfoUpdatePacket updatePacket = ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(onlinePlayers, player);
84+ + if (!de.pascalpex.deepslatemc.files.Config.getSendSpectatorModePackets()) {
85+ + List<ClientboundPlayerInfoUpdatePacket.Entry> newEntries = new java.util.ArrayList<>();
86+ + for (ClientboundPlayerInfoUpdatePacket.Entry entry : updatePacket.entries()) {
87+ + ClientboundPlayerInfoUpdatePacket.Entry newEntry = new ClientboundPlayerInfoUpdatePacket.Entry(
88+ + entry.profileId(),
89+ + entry.profile(),
90+ + entry.listed(),
91+ + entry.latency(),
92+ + entry.gameMode() == net.minecraft.world.level.GameType.SPECTATOR ? net.minecraft.world.level.GameType.SURVIVAL : entry.gameMode(),
93+ + entry.displayName(),
94+ + entry.showHat(),
95+ + entry.listOrder(),
96+ + entry.chatSession());
97+ + newEntries.add(newEntry);
10098+ }
101- + player.connection.send(updatePacket); // Paper - Add Listing API for Player
102- + // Deepslate end - Don't send spectator mode packets to other players
103- }
104- // Paper end - Use single player info update packet on join
105- player.sentListPacket = true;
99+ + updatePacket = new ClientboundPlayerInfoUpdatePacket(updatePacket.actions(), newEntries);
100+ + }
101+ + player.connection.send(updatePacket); // Paper - Add Listing API for Player
102+ + // Deepslate end - Don't send spectator mode packets to other players
103+ }
104+ // Paper end - Use single player info update packet on join
105+ player.sentListPacket = true;
0 commit comments