mirror of
https://github.com/PaperMC/Folia.git
synced 2025-07-31 01:20:47 +00:00
33 lines
2.3 KiB
Diff
33 lines
2.3 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/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
|
index fcfc686b01e73c3a25df68b268ae512d967674cf..403615ba14ad092b7bf37911296260f2815b7a89 100644
|
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -747,8 +747,18 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
|
Optional<CompoundTag> compound = tag.getCompound("RootVehicle");
|
|
if (!compound.isEmpty()) {
|
|
ServerLevel serverLevel = this.serverLevel();
|
|
+ Vec3 playerPos = this.position(); // Paper - force sync root vehicle to player position
|
|
Entity entity = EntityType.loadEntityRecursive(
|
|
- compound.get().getCompoundOrEmpty("Entity"), serverLevel, EntitySpawnReason.LOAD, entity2 -> !serverLevel.addWithUUID(entity2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT) ? null : entity2 // Paper - Entity#getEntitySpawnReason
|
|
+ // Paper start - force sync root vehicle to player position
|
|
+ compound.get().getCompoundOrEmpty("Entity"), serverLevel, EntitySpawnReason.LOAD, (Entity entity2) -> {
|
|
+ // Paper start - force sync root vehicle to player position
|
|
+ if (entity2.distanceToSqr(ServerPlayer.this) > (5.0 * 5.0)) {
|
|
+ entity2.setPosRaw(playerPos.x, playerPos.y, playerPos.z, true);
|
|
+ }
|
|
+ // Paper end - force sync root vehicle to player position
|
|
+ return !serverLevel.addWithUUID(entity2, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT) ? null : entity2; // Paper - Entity#getEntitySpawnReason
|
|
+ }
|
|
+ // Paper end - force sync root vehicle to player position
|
|
);
|
|
if (entity != null) {
|
|
UUID uuid = compound.get().read("Attach", UUIDUtil.CODEC).orElse(null);
|