aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0428-Don-t-update-entity-trackers-for-worlds-without-play.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0428-Don-t-update-entity-trackers-for-worlds-without-play.patch')
-rw-r--r--Spigot-Server-Patches/0428-Don-t-update-entity-trackers-for-worlds-without-play.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0428-Don-t-update-entity-trackers-for-worlds-without-play.patch b/Spigot-Server-Patches/0428-Don-t-update-entity-trackers-for-worlds-without-play.patch
new file mode 100644
index 0000000000..e3348db920
--- /dev/null
+++ b/Spigot-Server-Patches/0428-Don-t-update-entity-trackers-for-worlds-without-play.patch
@@ -0,0 +1,31 @@
+From efd33c3794e72cc40a77a3e58ecf90aec6efd6c2 Mon Sep 17 00:00:00 2001
+From: Shane Freeder <[email protected]>
+Date: Sun, 24 Mar 2019 18:52:31 +0000
+Subject: [PATCH] Don't update entity trackers for worlds without players
+
+PlayerList#moveToWorld already untracks the player from the player list,
+meaning that we do not need to worry about this untracking players
+who've left the world, The server also untracks a player during
+disconnect, handing yet another case.
+
+If we don't need to untrack players who've left the world, it should be
+reasonably save to do this, as we're not going to be performing any
+server->client updates here, which is what this code is intended to do,
+and all players should be untracked.
+
+diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
+index ce39ea09e8..b93fccf919 100644
+--- a/src/main/java/net/minecraft/server/MinecraftServer.java
++++ b/src/main/java/net/minecraft/server/MinecraftServer.java
+@@ -1113,7 +1113,7 @@ public abstract class MinecraftServer implements IAsyncTaskHandler, IMojangStati
+
+ this.methodProfiler.exit();
+ this.methodProfiler.enter("tracker");
+- worldserver.getTracker().updatePlayers();
++ if (playerList.players.size() > 0) worldserver.getTracker().updatePlayers(); // Paper - No players, why spend time tracking them? (See patch)
+ this.methodProfiler.exit();
+ this.methodProfiler.exit();
+ worldserver.explosionDensityCache.clear(); // Paper - Optimize explosions
+--
+2.21.0
+