spigot/CraftBukkit-Patches/0020-Prevent-Ghost-Players-Caused-by-Plugins.patch

43 lines
1.9 KiB
Diff
Raw Normal View History

2024-10-23 02:15:00 +11:00
From d85e845bd6e43447345af8d39ef750a2735ecf3b Mon Sep 17 00:00:00 2001
2014-04-12 14:18:37 +10:00
From: Alex Ciuba <alexciuba@gmail.com>
Date: Tue, 11 Jun 2013 15:23:03 -0400
Subject: [PATCH] Prevent Ghost Players Caused by Plugins
Check if the player is still connected after firing event. Fixes BUKKIT-4327
2024-06-14 01:05:00 +10:00
diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java
2024-10-23 02:15:00 +11:00
index 7c86389a88..4935614a7a 100644
2024-06-14 01:05:00 +10:00
--- a/src/main/java/net/minecraft/server/level/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java
2024-10-23 02:15:00 +11:00
@@ -1379,6 +1379,11 @@ public class EntityPlayer extends EntityHuman {
2024-06-14 01:05:00 +10:00
PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn, isAnchorSpawn, reason);
this.level().getCraftServer().getPluginManager().callEvent(respawnEvent);
+ // Spigot Start
+ if (this.connection.isDisconnected()) {
+ return null;
+ }
+ // Spigot End
location = respawnEvent.getRespawnLocation();
2021-03-16 09:00:00 +11:00
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
2024-10-23 02:15:00 +11:00
index 6ec24ecfce..ea2864bfb7 100644
2021-03-16 09:00:00 +11:00
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
2024-10-23 02:15:00 +11:00
@@ -672,6 +672,11 @@ public abstract class PlayerList {
2024-06-14 01:05:00 +10:00
} else {
2024-10-23 02:15:00 +11:00
teleporttransition = new TeleportTransition(((CraftWorld) location.getWorld()).getHandle(), CraftLocation.toVec3D(location), Vec3D.ZERO, location.getYaw(), location.getPitch(), TeleportTransition.DO_NOTHING);
2024-06-14 01:05:00 +10:00
}
+ // Spigot Start
2024-10-23 02:15:00 +11:00
+ if (teleporttransition == null) {
2024-06-14 01:05:00 +10:00
+ return entityplayer;
+ }
+ // Spigot End
2024-10-23 02:15:00 +11:00
WorldServer worldserver = teleporttransition.newLevel();
2024-06-14 01:05:00 +10:00
entityplayer1.spawnIn(worldserver);
entityplayer1.unsetRemoved();
2014-04-12 14:18:37 +10:00
--
2024-10-23 02:15:00 +11:00
2.47.0
2014-04-12 14:18:37 +10:00