diff options
author | md_5 <git@md-5.net> | 2018-09-07 20:32:57 +1000 |
---|---|---|
committer | md_5 <git@md-5.net> | 2018-09-07 20:32:57 +1000 |
commit | 0ddd67b0a9a88f1032929c3e9a42215468199a93 (patch) | |
tree | fb7c94308bb568096dbef65852453dc0dd611b0d /nms-patches | |
parent | 632449b6c48da3c7c96a430fdb95c1d8b3b873df (diff) | |
download | craftbukkit-0ddd67b0a9a88f1032929c3e9a42215468199a93.tar craftbukkit-0ddd67b0a9a88f1032929c3e9a42215468199a93.tar.gz craftbukkit-0ddd67b0a9a88f1032929c3e9a42215468199a93.tar.lz craftbukkit-0ddd67b0a9a88f1032929c3e9a42215468199a93.tar.xz craftbukkit-0ddd67b0a9a88f1032929c3e9a42215468199a93.zip |
SPIGOT-4350: Expand EntityTeleportEvent to /teleport command
Diffstat (limited to 'nms-patches')
-rw-r--r-- | nms-patches/CommandTeleport.patch | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/nms-patches/CommandTeleport.patch b/nms-patches/CommandTeleport.patch index 76a8dd2a..68307ea1 100644 --- a/nms-patches/CommandTeleport.patch +++ b/nms-patches/CommandTeleport.patch @@ -1,6 +1,18 @@ --- a/net/minecraft/server/CommandTeleport.java +++ b/net/minecraft/server/CommandTeleport.java -@@ -49,7 +49,7 @@ +@@ -14,6 +14,11 @@ + import java.util.Set; + import java.util.function.Predicate; + import javax.annotation.Nullable; ++// CraftBukkit start ++import org.bukkit.Location; ++import org.bukkit.craftbukkit.CraftWorld; ++import org.bukkit.event.entity.EntityTeleportEvent; ++// CraftBukkit end + + public class CommandTeleport { + +@@ -49,7 +54,7 @@ while (iterator.hasNext()) { Entity entity1 = (Entity) iterator.next(); @@ -9,7 +21,7 @@ } if (collection.size() == 1) { -@@ -120,9 +120,9 @@ +@@ -120,9 +125,9 @@ } if (worldserver == entity.world) { @@ -21,3 +33,25 @@ } entity.setHeadRotation(f); +@@ -131,6 +136,21 @@ + float f3 = MathHelper.g(f1); + + f3 = MathHelper.a(f3, -90.0F, 90.0F); ++ // CraftBukkit start - Teleport event ++ Location to = new Location(worldserver.getWorld(), d0, d1, d2, f2, f3); ++ EntityTeleportEvent event = new EntityTeleportEvent(entity.getBukkitEntity(), entity.getBukkitEntity().getLocation(), to); ++ worldserver.getServer().getPluginManager().callEvent(event); ++ if (event.isCancelled()) { ++ return; ++ } ++ ++ d0 = to.getX(); ++ d1 = to.getY(); ++ d2 = to.getZ(); ++ f2 = to.getYaw(); ++ f3 = to.getPitch(); ++ worldserver = ((CraftWorld) to.getWorld()).getHandle(); ++ // CraftBukkit end + if (worldserver == entity.world) { + entity.setPositionRotation(d0, d1, d2, f2, f3); + entity.setHeadRotation(f2); |