Bandaid NPE from CraftPlayer#registerPlayer

This commit is contained in:
Ivan Pekov 2020-10-09 13:58:15 +03:00
parent 2ad8efe6ae
commit d1350246d5
No known key found for this signature in database
GPG Key ID: BC975C392D9CA3A3
5 changed files with 17 additions and 30 deletions

View File

@ -1181,7 +1181,7 @@ index 963c90c065a9e362c8c3030bb36ac6bf0c14a8e2..00000000000000000000000000000000
-
- public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index cd6c0753bdf11c2ae7075e40cd91cc517d8d71b9..8a454e66547ccb3ec2dfef922ec46b2a4595a81a 100644
index 06194f1fe6e2b57c1ef370d807f6faad06953b38..fbbc1ab3a77df9da7c76d456330d9c63ed190628 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1295,7 +1295,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@ -1193,22 +1193,6 @@ index cd6c0753bdf11c2ae7075e40cd91cc517d8d71b9..8a454e66547ccb3ec2dfef922ec46b2a
if (playerSaveInterval > 0) { // Paper
this.playerList.savePlayers(playerSaveInterval); // Paper
}// Paper
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java.rej b/src/main/java/net/minecraft/server/MinecraftServer.java.rej
deleted file mode 100644
index 2a6cb738059fb4bd0cc45f0db7aad25f7c46f9e5..0000000000000000000000000000000000000000
--- a/src/main/java/net/minecraft/server/MinecraftServer.java.rej
+++ /dev/null
@@ -1,10 +0,0 @@
-diff a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java (rejected hunks)
-@@ -1283,7 +1283,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
- //if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // CraftBukkit // Paper - move down
- //MinecraftServer.LOGGER.debug("Autosave started"); // Paper
- serverAutoSave = (autosavePeriod > 0 && this.ticks % autosavePeriod == 0); // Paper
-- this.methodProfiler.enter("save");
-+ //this.methodProfiler.enter("save"); // Akarin - remove caller
- if (autosavePeriod > 0 && this.ticks % autosavePeriod == 0) { // Paper
- this.playerList.savePlayers();
- }// Paper
diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java
index e10995ec30dd9a10d781b3c1709fd2db5a9becdd..f6ffefd7e356c9c68cb6591cab55de9363442faf 100644
--- a/src/main/java/net/minecraft/server/PortalTravelAgent.java

View File

@ -39,10 +39,10 @@ index 74ed02fa9296583977bb721014b10ff8b708b43c..a13c7b2b5bc79ecaea404779149ed02c
.completer(new ConsoleCommandCompleter(this.server))
);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 8a454e66547ccb3ec2dfef922ec46b2a4595a81a..662a005becd1d2642ae50c25fdf3bfadf7ae6ae2 100644
index fbbc1ab3a77df9da7c76d456330d9c63ed190628..0d33028577e22f0f29b872ef5cd55de3f92ce3f0 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1520,7 +1520,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -1517,7 +1517,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
}
public String getServerModName() {

View File

@ -7,7 +7,7 @@ Original patch by:
Co-authored-by: tr7zw <tr7zw@live.de>
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 662a005becd1d2642ae50c25fdf3bfadf7ae6ae2..21a0656ce8a44acf45a1756add556a5c71e3eeb7 100644
index 0d33028577e22f0f29b872ef5cd55de3f92ce3f0..a1f3cbce6827c512a3befd2dcb05b31866611d89 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -935,6 +935,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas

View File

@ -185,10 +185,10 @@ index 0224a6d0e47e836fa485b39e7b4ce5b83ea554bf..fe578d306575bbdc8ca4a993a648e889
return (String[]) this.d.keySet().toArray(new String[this.d.size()]);
}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 21a0656ce8a44acf45a1756add556a5c71e3eeb7..6d62aa2b08f40479997f8bcc841cfb704b18e1b9 100644
index a1f3cbce6827c512a3befd2dcb05b31866611d89..753fb233c971c08d5ac358d05473628c0ee832ec 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1959,6 +1959,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -1956,6 +1956,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
return new DataPackConfiguration(list, list1);
}

View File

@ -529,7 +529,7 @@ index 6c8cb39ac8786734cda994ef29ba74c685f3b9be..9cde23731ca8e22b5263784e65c7efb0
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 7e91e95941039cce630ed3eb88e1919e1d08c091..b444552e2cd6374fe975b8a319d319fadbe6b11a 100644
index 7e91e95941039cce630ed3eb88e1919e1d08c091..e87c02eec6885805a86e67fada0cf033ced5f304 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -1253,10 +1253,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@ -549,7 +549,7 @@ index 7e91e95941039cce630ed3eb88e1919e1d08c091..b444552e2cd6374fe975b8a319d319fa
// Remove the hidden player from this player user list, if they're on it
if (other.sentListPacket) {
@@ -1303,10 +1309,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
@@ -1303,10 +1309,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, other));
@ -557,16 +557,19 @@ index 7e91e95941039cce630ed3eb88e1919e1d08c091..b444552e2cd6374fe975b8a319d319fa
+ tracker.trackedEntitiesLock.lock();
+ try { // Yatopia end
PlayerChunkMap.EntityTracker entry = tracker.trackedEntities.get(other.getId());
+ // Yatopia start
- if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
+ if (entry != null) { // Yatopia - check moved down
+ // Yatopia start
+ entry.trackedPlayersLock.lock();
+ try {
+ // Yatopia end
if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
+ if (!entry.trackedPlayers.contains(getHandle())) {
entry.updatePlayer(getHandle());
}
+ } finally { // Yatopia start
+ }
+ } finally {
+ entry.trackedPlayersLock.unlock();
+ } // Yatopia end
+ }
+ // Yatopia end
}
+ } finally { // Yatopia start
+ tracker.trackedEntitiesLock.unlock();
+ } // Yatopia end