mirror of
https://github.com/PaperMC/Folia.git
synced 2024-11-22 12:05:12 +01:00
b843a3512d
Using the total number of users in the connection set is not correct since those users may not be logged in yet. Instead, track separately the number of users who have passed the slot check. Fixes https://github.com/PaperMC/Folia/issues/205
27 lines
1.7 KiB
Diff
27 lines
1.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Sun, 25 Jun 2023 13:57:30 -0700
|
|
Subject: [PATCH] Sync vehicle position to player position on player data load
|
|
|
|
This allows the player to be re-positioned before logging into
|
|
the world without causing thread checks to trip on Folia.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
index a390227e5af1232f2090d2be72f7789805025f76..bbf43b5844a75a25c1757cfb1c3c9dbe9b1fadde 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -522,7 +522,13 @@ public abstract class PlayerList {
|
|
CompoundTag nbttagcompound1 = nbttagcompound.getCompound("RootVehicle");
|
|
// CraftBukkit start
|
|
ServerLevel finalWorldServer = worldserver1;
|
|
+ Vec3 playerPos = player.position(); // Paper - force sync root vehicle to player position
|
|
Entity entity = EntityType.loadEntityRecursive(nbttagcompound1.getCompound("Entity"), finalWorldServer, (entity1) -> {
|
|
+ // Paper start - force sync root vehicle to player position
|
|
+ if (entity1.distanceToSqr(player) > (5.0 * 5.0)) {
|
|
+ entity1.setPosRaw(playerPos.x, playerPos.y, playerPos.z, true);
|
|
+ }
|
|
+ // Paper end - force sync root vehicle to player position
|
|
return !finalWorldServer.addWithUUID(entity1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT) ? null : entity1; // Paper - Entity#getEntitySpawnReason
|
|
// CraftBukkit end
|
|
});
|