PaperMC/patches/server/0913-Fix-missing-event-call-for-entity-teleport-API.patch
Nassim Jahnke dc684c60d1
Remove bad server.scheduleOnMain disconnect calls from old patches
The new behavior of disconnect to block the current thread until the disconnect succeeded is better than throwing it off to happen at some point
2024-06-16 12:56:00 +02:00

28 lines
1.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: booky10 <boooky10@gmail.com>
Date: Sun, 12 Nov 2023 05:09:47 +0100
Subject: [PATCH] Fix missing event call for entity teleport API
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index a8b9b50991361160880b9fc0a94cad30c319e62e..b8eb9166e44da8745a056bf68f2f9316ce25d7a7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -258,6 +258,17 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return false;
}
+ // Paper start - fix teleport event not being called
+ org.bukkit.event.entity.EntityTeleportEvent event = new org.bukkit.event.entity.EntityTeleportEvent(
+ this, this.getLocation(), location);
+ // cancelling the event is handled differently for players and entities,
+ // entities just stop teleporting, players will still teleport to the "from" location of the event
+ if (!event.callEvent() || event.getTo() == null) {
+ return false;
+ }
+ location = event.getTo();
+ // Paper end
+
// If this entity is riding another entity, we must dismount before teleporting.
if (dismount) this.entity.stopRiding(); // Paper - Teleport passenger API