diff options
Diffstat (limited to 'Spigot-Server-Patches/0459-Don-t-move-existing-players-to-world-spawn.patch')
-rw-r--r-- | Spigot-Server-Patches/0459-Don-t-move-existing-players-to-world-spawn.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0459-Don-t-move-existing-players-to-world-spawn.patch b/Spigot-Server-Patches/0459-Don-t-move-existing-players-to-world-spawn.patch new file mode 100644 index 0000000000..261e26db9e --- /dev/null +++ b/Spigot-Server-Patches/0459-Don-t-move-existing-players-to-world-spawn.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <[email protected]> +Date: Thu, 9 Apr 2020 21:20:33 -0400 +Subject: [PATCH] Don't move existing players to world spawn + +This can cause a nasty server lag the spawn chunks are not kept loaded +or they aren't finished loading yet, or if the world spawn radius is +larger than the keep loaded range. + +By skipping this, we avoid potential for a large spike on server start. + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index f4215d38acef8018f09dff5f379c14336647687d..4e4c0acc6c103c85b7ba2a390a54d3513939d547 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -114,7 +114,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + this.serverStatisticManager = minecraftserver.getPlayerList().getStatisticManager(this); + this.advancementDataPlayer = minecraftserver.getPlayerList().f(this); + this.H = 1.0F; +- this.a(worldserver); ++ //this.a(worldserver); // Paper - don't move to spawn on login, only first join + + this.cachedSingleHashSet = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<>(this); // Paper + +@@ -162,6 +162,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + } + // CraftBukkit end + ++ public void moveToSpawn(WorldServer worldserver) { a(worldserver); } // Paper - OBFHELPER + private void a(WorldServer worldserver) { + BlockPosition blockposition = worldserver.getSpawn(); + +@@ -302,7 +303,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + position = new Vec3D(world.getSpawn()); + } + this.world = world; +- this.setPosition(position.getX(), position.getY(), position.getZ()); ++ this.setPositionRaw(position.getX(), position.getY(), position.getZ()); // Paper - don't register to chunks yet + } + this.dimension = ((WorldServer) this.world).getWorldProvider().getDimensionManager(); + this.playerInteractManager.a((WorldServer) world); +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index 157738f452493aabdefb228cd527ba85400baad5..611dea90200fe346915d66317e21d94154381e97 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -108,6 +108,7 @@ public abstract class PlayerList { + NBTTagCompound bukkit = nbttagcompound.getCompound("bukkit"); + s = bukkit.hasKeyOfType("lastKnownName", 8) ? bukkit.getString("lastKnownName") : s; + } ++ if (nbttagcompound == null) entityplayer.moveToSpawn(worldserver); // Paper - only move to spawn on first login, otherwise, stay where you are.... + // CraftBukkit end + + entityplayer.spawnIn(worldserver); |