Skip to content

Commit 78999b5

Browse files
authored
Remove redundant getRemoteAddress that can cause an NPE (#7331)
1 parent 6663747 commit 78999b5

17 files changed

+73
-65
lines changed

patches/server/0405-Load-Chunks-for-Login-Asynchronously.patch

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ index bb767f5b626225e70a8af273384bb74dbd21430d..301042e7a0d372a914f27ec0988dd938
9696
try {
9797
ServerPlayer entityplayer1 = this.server.getPlayerList().getPlayerForLogin(this.gameProfile, s); // CraftBukkit - add player reference
9898
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
99-
index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297e3afd1d4 100644
99+
index f096fbe48d8cc70e3749f48bc9972def42b0068d..b84124abaca401406fbffc8bc6bd21245c303156 100644
100100
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
101101
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
102102
@@ -39,6 +39,7 @@ import net.minecraft.network.protocol.Packet;
@@ -136,7 +136,24 @@ index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297
136136
// CraftBukkit end
137137

138138
if (nbttagcompound != null) {
139-
@@ -259,6 +266,52 @@ public abstract class PlayerList {
139+
@@ -213,11 +220,15 @@ public abstract class PlayerList {
140+
if (nbttagcompound == null) player.fudgeSpawnLocation(worldserver1); // Paper - only move to spawn on first login, otherwise, stay where you are....
141+
142+
player.setLevel(worldserver1);
143+
- String s1 = "local";
144+
+ // Paper start - make s1 final
145+
+ final String s1;
146+
147+
if (connection.getRemoteAddress() != null) {
148+
s1 = connection.getRemoteAddress().toString();
149+
+ } else {
150+
+ s1 = "local";
151+
}
152+
+ // Paper end
153+
154+
// Spigot start - spawn location event
155+
Player spawnPlayer = player.getBukkitEntity();
156+
@@ -259,6 +270,52 @@ public abstract class PlayerList {
140157
player.getRecipeBook().sendInitialRecipeBook(player);
141158
this.updateEntireScoreboard(worldserver1.getScoreboard(), player);
142159
this.server.invalidateStatus();
@@ -160,7 +177,7 @@ index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297
160177
+ playerconnection.playerJoinReady = () -> {
161178
+ postChunkLoadJoin(
162179
+ player, finalWorldserver, connection, playerconnection,
163-
+ nbttagcompound, connection.getRemoteAddress().toString(), lastKnownName
180+
+ nbttagcompound, s1, lastKnownName
164181
+ );
165182
+ };
166183
+ });
@@ -189,15 +206,15 @@ index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297
189206
TranslatableComponent chatmessage;
190207

191208
if (player.getGameProfile().getName().equalsIgnoreCase(s)) {
192-
@@ -502,6 +555,7 @@ public abstract class PlayerList {
209+
@@ -502,6 +559,7 @@ public abstract class PlayerList {
193210

194211
protected void save(ServerPlayer player) {
195212
if (!player.getBukkitEntity().isPersistent()) return; // CraftBukkit
196213
+ if (!player.didPlayerJoinEvent) return; // Paper - If we never fired PJE, we disconnected during login. Data has not changed, and additionally, our saved vehicle is not loaded! If we save now, we will lose our vehicle (CraftBukkit bug)
197214
this.playerIo.save(player);
198215
ServerStatsCounter serverstatisticmanager = (ServerStatsCounter) player.getStats(); // CraftBukkit
199216

200-
@@ -529,7 +583,7 @@ public abstract class PlayerList {
217+
@@ -529,7 +587,7 @@ public abstract class PlayerList {
201218
}
202219

203220
PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, com.destroystokyo.paper.PaperConfig.useDisplayNameInQuit ? entityplayer.getBukkitEntity().displayName() : net.kyori.adventure.text.Component.text(entityplayer.getScoreboardName())));
@@ -206,7 +223,7 @@ index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297
206223
entityplayer.getBukkitEntity().disconnect(playerQuitEvent.getQuitMessage());
207224

208225
if (server.isSameThread()) entityplayer.doTick(); // SPIGOT-924 // Paper - don't tick during emergency shutdowns (Watchdog)
209-
@@ -574,6 +628,13 @@ public abstract class PlayerList {
226+
@@ -574,6 +632,13 @@ public abstract class PlayerList {
210227
// this.advancements.remove(uuid);
211228
// CraftBukkit end
212229
}
@@ -220,7 +237,7 @@ index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297
220237

221238
// CraftBukkit start
222239
// this.broadcastAll(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, new EntityPlayer[]{entityplayer}));
223-
@@ -591,7 +652,7 @@ public abstract class PlayerList {
240+
@@ -591,7 +656,7 @@ public abstract class PlayerList {
224241
this.cserver.getScoreboardManager().removePlayer(entityplayer.getBukkitEntity());
225242
// CraftBukkit end
226243

@@ -229,7 +246,7 @@ index f096fbe48d8cc70e3749f48bc9972def42b0068d..f3926ee149e5e42d48e33759202d8297
229246
}
230247

231248
// CraftBukkit start - Whole method, SocketAddress to LoginListener, added hostname to signature, return EntityPlayer
232-
@@ -610,6 +671,13 @@ public abstract class PlayerList {
249+
@@ -610,6 +675,13 @@ public abstract class PlayerList {
233250
list.add(entityplayer);
234251
}
235252
}

patches/server/0456-incremental-chunk-and-player-saving.patch

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ index 626bcbc6dd013260c3f8b38a1d14e7ba35dc1e01..9e96b0465717bfa761289c255fd8d2f1
165165
for (int i = 0; i < this.futures.length(); ++i) {
166166
CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> completablefuture = (CompletableFuture) this.futures.get(i);
167167
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
168-
index d358bca3aa0407ede113b4ca6243043f75202267..326a3b312d3446b813e325867f852e0cf6786945 100644
168+
index e35a47e0c8eebbad7154a1357a6b868887bc4a0c..cac9c9ede6024653f4ae83cbbdd9939f75ccad48 100644
169169
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
170170
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
171171
@@ -101,6 +101,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureMana
@@ -301,7 +301,7 @@ index b327bd2f48166a4a0c831b0209695fe5935f6a68..73b1018b0aca377ed0ff188e74040cef
301301
public void close() throws IOException {
302302
// CraftBukkit start
303303
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
304-
index 083772c2f71851b5521f0ec5c1ecb872e357e8f7..be26327d31a3117cb7a5bf752c49c204738bc91e 100644
304+
index 0d70647bdd08371beaf476bd4eb5a45d985e498d..b27fb07aacb66259f640de5c5aa6849eb7e8cc9c 100644
305305
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
306306
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
307307
@@ -1058,6 +1058,37 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -355,18 +355,18 @@ index 6b0cb662d9163c360035e19c5faad59fc72af3c1..d2280b9e9f107dca890bc76f0c58e707
355355
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y = 10;
356356
public ServerGamePacketListenerImpl connection;
357357
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
358-
index f3926ee149e5e42d48e33759202d8297e3afd1d4..8c0faa9ee28943c7750dc33947e3f096b45a2026 100644
358+
index b84124abaca401406fbffc8bc6bd21245c303156..ae921bfe9634f0fe41ef18db8da7bf00d536b59a 100644
359359
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
360360
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
361-
@@ -556,6 +556,7 @@ public abstract class PlayerList {
361+
@@ -560,6 +560,7 @@ public abstract class PlayerList {
362362
protected void save(ServerPlayer player) {
363363
if (!player.getBukkitEntity().isPersistent()) return; // CraftBukkit
364364
if (!player.didPlayerJoinEvent) return; // Paper - If we never fired PJE, we disconnected during login. Data has not changed, and additionally, our saved vehicle is not loaded! If we save now, we will lose our vehicle (CraftBukkit bug)
365365
+ player.lastSave = MinecraftServer.currentTick; // Paper
366366
this.playerIo.save(player);
367367
ServerStatsCounter serverstatisticmanager = (ServerStatsCounter) player.getStats(); // CraftBukkit
368368

369-
@@ -1158,10 +1159,22 @@ public abstract class PlayerList {
369+
@@ -1162,10 +1163,22 @@ public abstract class PlayerList {
370370
}
371371

372372
public void saveAll() {

patches/server/0470-Implement-Chunk-Priority-Urgency-System-for-Chunks.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,7 @@ index 8770fe0db46b01e8b608637df4f1a669a3f4cdde..3c1698ba0d3bc412ab957777d9b5211d
11281128
private final String name;
11291129
private final Comparator<T> comparator;
11301130
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
1131-
index 135337afa09f090847d26268fcb8e542b1535ef3..b164b43d9d61398231451162cfb07d118f2045ba 100644
1131+
index d06e43bfaf8d22e0374bb6ed2e62c65e15699ef5..373f1c600ecdf75293dbe5ff6ef676a0e35e2e80 100644
11321132
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
11331133
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
11341134
@@ -175,6 +175,7 @@ public abstract class PlayerList {
@@ -1139,7 +1139,7 @@ index 135337afa09f090847d26268fcb8e542b1535ef3..b164b43d9d61398231451162cfb07d11
11391139
ServerPlayer prev = pendingPlayers.put(player.getUUID(), player);// Paper
11401140
if (prev != null) {
11411141
disconnectPendingPlayer(prev);
1142-
@@ -285,8 +286,8 @@ public abstract class PlayerList {
1142+
@@ -289,8 +290,8 @@ public abstract class PlayerList {
11431143
net.minecraft.server.level.ChunkMap playerChunkMap = worldserver1.getChunkSource().chunkMap;
11441144
net.minecraft.server.level.DistanceManager distanceManager = playerChunkMap.distanceManager;
11451145
distanceManager.addTicketAtLevel(net.minecraft.server.level.TicketType.LOGIN, pos, 31, pos.toLong());

patches/server/0476-Fix-SPIGOT-5989.patch

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This fixes that by checking if the modified spawn location is
1010
still at a respawn anchor.
1111

1212
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
13-
index b164b43d9d61398231451162cfb07d118f2045ba..98c70121c53e42e3c9bc7403eed83335f567bc74 100644
13+
index 373f1c600ecdf75293dbe5ff6ef676a0e35e2e80..8ed4d4bc6d08c8339aba57b17f068c7bef22787c 100644
1414
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
1515
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
1616
@@ -78,6 +78,7 @@ import net.minecraft.world.level.GameRules;
@@ -21,15 +21,15 @@ index b164b43d9d61398231451162cfb07d118f2045ba..98c70121c53e42e3c9bc7403eed83335
2121
import net.minecraft.world.level.block.state.BlockState;
2222
import net.minecraft.world.level.border.BorderChangeListener;
2323
import net.minecraft.world.level.border.WorldBorder;
24-
@@ -830,6 +831,7 @@ public abstract class PlayerList {
24+
@@ -834,6 +835,7 @@ public abstract class PlayerList {
2525
// Paper start
2626
boolean isBedSpawn = false;
2727
boolean isRespawn = false;
2828
+ boolean isLocAltered = false; // Paper - Fix SPIGOT-5989
2929
// Paper end
3030

3131
// CraftBukkit start - fire PlayerRespawnEvent
32-
@@ -840,7 +842,7 @@ public abstract class PlayerList {
32+
@@ -844,7 +846,7 @@ public abstract class PlayerList {
3333
Optional optional;
3434

3535
if (blockposition != null) {
@@ -38,7 +38,7 @@ index b164b43d9d61398231451162cfb07d118f2045ba..98c70121c53e42e3c9bc7403eed83335
3838
} else {
3939
optional = Optional.empty();
4040
}
41-
@@ -884,7 +886,12 @@ public abstract class PlayerList {
41+
@@ -888,7 +890,12 @@ public abstract class PlayerList {
4242
}
4343
// Spigot End
4444

@@ -52,7 +52,7 @@ index b164b43d9d61398231451162cfb07d118f2045ba..98c70121c53e42e3c9bc7403eed83335
5252
if (!flag) entityplayer.reset(); // SPIGOT-4785
5353
isRespawn = true; // Paper
5454
} else {
55-
@@ -922,8 +929,12 @@ public abstract class PlayerList {
55+
@@ -926,8 +933,12 @@ public abstract class PlayerList {
5656
}
5757
// entityplayer1.initInventoryMenu();
5858
entityplayer1.setHealth(entityplayer1.getHealth());

patches/server/0531-Add-API-for-quit-reason.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ index da130b7f0da73eb9868539911ba3157b88fc7199..c321f22af679cafd00be09a9212346b5
4949
this.connection.disconnect(ichatbasecomponent);
5050
});
5151
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
52-
index ba46e9eafab188455d49f1a555e38b0ebe66fcf9..3428f3014d9b8e9422a9f586268f5e82dcf1e33f 100644
52+
index 35cf9c8235534a5c59065718ff57873f9c00bfdc..e5ed9784b0e7d208604b41f51f1adf9c8f50fe08 100644
5353
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
5454
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
55-
@@ -596,7 +596,7 @@ public abstract class PlayerList {
55+
@@ -600,7 +600,7 @@ public abstract class PlayerList {
5656
entityplayer.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DISCONNECT); // Paper
5757
}
5858

patches/server/0534-Expose-world-spawn-angle.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Expose world spawn angle
55

66

77
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
8-
index 3428f3014d9b8e9422a9f586268f5e82dcf1e33f..ba0596c0d6340492f2d4b017a87459450ffdd77b 100644
8+
index e5ed9784b0e7d208604b41f51f1adf9c8f50fe08..8ce5f463f16857b5862b6e0a77c63d8118b34d67 100644
99
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
1010
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
11-
@@ -874,7 +874,7 @@ public abstract class PlayerList {
11+
@@ -878,7 +878,7 @@ public abstract class PlayerList {
1212
if (location == null) {
1313
worldserver1 = this.server.getLevel(Level.OVERWORLD);
1414
blockposition = entityplayer1.getSpawnPoint(worldserver1);

patches/server/0576-Fix-villager-boat-exploit.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix villager boat exploit
55

66

77
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
8-
index ba0596c0d6340492f2d4b017a87459450ffdd77b..201f36b0f8ae391b2efbad5cc38f115537a761a2 100644
8+
index 8ce5f463f16857b5862b6e0a77c63d8118b34d67..f4e74b0bc3d192d7f7c2bc1dbfef92a28863a57c 100644
99
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
1010
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
11-
@@ -621,6 +621,14 @@ public abstract class PlayerList {
11+
@@ -625,6 +625,14 @@ public abstract class PlayerList {
1212
PlayerList.LOGGER.debug("Removing player mount");
1313
entityplayer.stopRiding();
1414
entity.getPassengersAndSelf().forEach((entity1) -> {

patches/server/0577-Add-sendOpLevel-API.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Add sendOpLevel API
55

66

77
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
8-
index 201f36b0f8ae391b2efbad5cc38f115537a761a2..0052a9c5d19db44331bb7ee93544d783b471e70a 100644
8+
index f4e74b0bc3d192d7f7c2bc1dbfef92a28863a57c..b7f3be857d9ffb166e99f20753dbc671bb3b5451 100644
99
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
1010
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
11-
@@ -1119,6 +1119,11 @@ public abstract class PlayerList {
11+
@@ -1123,6 +1123,11 @@ public abstract class PlayerList {
1212
}
1313

1414
private void sendPlayerPermissionLevel(ServerPlayer player, int permissionLevel) {
@@ -20,7 +20,7 @@ index 201f36b0f8ae391b2efbad5cc38f115537a761a2..0052a9c5d19db44331bb7ee93544d783
2020
if (player.connection != null) {
2121
byte b0;
2222

23-
@@ -1133,8 +1138,10 @@ public abstract class PlayerList {
23+
@@ -1137,8 +1142,10 @@ public abstract class PlayerList {
2424
player.connection.send(new ClientboundEntityEventPacket(player, b0));
2525
}
2626

patches/server/0618-Drop-carried-item-when-player-has-disconnected.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ Fixes disappearance of held items, when a player gets disconnected and PlayerDro
77
Closes #5036
88

99
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
10-
index bcdbdc648a76d2c57f4b0d86ae6f577fbc4be3d8..8e80783cd72eb7a07806f89341aff52a370ed87a 100644
10+
index 774db05fa19b1fc1d13481010e3135eba9593a3b..d591492c50ba8c4158199d4ff848ab5072c5d86d 100644
1111
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
1212
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
13-
@@ -614,6 +614,14 @@ public abstract class PlayerList {
13+
@@ -618,6 +618,14 @@ public abstract class PlayerList {
1414
}
1515
// Paper end
1616

patches/server/0640-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@ Subject: [PATCH] Fix anchor respawn acting as a bed respawn from the end
66

77

88
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
9-
index 8e80783cd72eb7a07806f89341aff52a370ed87a..d7e6baab6fd48e4126e1c333d997a8673b4c0139 100644
9+
index d591492c50ba8c4158199d4ff848ab5072c5d86d..b5c9c959de02430aee46bb8a1e55cef8fc6f69bd 100644
1010
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
1111
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
12-
@@ -847,6 +847,7 @@ public abstract class PlayerList {
12+
@@ -851,6 +851,7 @@ public abstract class PlayerList {
1313

1414
// Paper start
1515
boolean isBedSpawn = false;
1616
+ boolean isAnchorSpawn = false;
1717
boolean isRespawn = false;
1818
boolean isLocAltered = false; // Paper - Fix SPIGOT-5989
1919
// Paper end
20-
@@ -867,6 +868,7 @@ public abstract class PlayerList {
20+
@@ -871,6 +872,7 @@ public abstract class PlayerList {
2121
if (optional.isPresent()) {
2222
BlockState iblockdata = worldserver1.getBlockState(blockposition);
2323
boolean flag3 = iblockdata.is(Blocks.RESPAWN_ANCHOR);
2424
+ isAnchorSpawn = flag3; // Paper - Fix anchor respawn acting as a bed respawn from the end portal
2525
Vec3 vec3d = (Vec3) optional.get();
2626
float f1;
2727

28-
@@ -895,7 +897,7 @@ public abstract class PlayerList {
28+
@@ -899,7 +901,7 @@ public abstract class PlayerList {
2929
}
3030

3131
Player respawnPlayer = entityplayer1.getBukkitEntity();

0 commit comments

Comments
 (0)