Fix missing event call for entity teleport API (#9937)
* Fix missing event call for entity teleport API Previously a plugin couldn't cancel or modify an entity-teleport from another plugin. * rebase
This commit is contained in:
parent
581c7434be
commit
86117967db
1 changed files with 28 additions and 0 deletions
|
@ -0,0 +1,28 @@
|
||||||
|
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 0e6c7284b9aee6c5f2454a3a095ebf349f887740..9f843b89dc20b91bf7243facee8486d525e4a1b3 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
||||||
|
@@ -603,6 +603,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()) {
|
||||||
|
+ 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
|
||||||
|
|
Loading…
Reference in a new issue