mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-23 11:06:29 +01:00
58 lines
2.7 KiB
Diff
58 lines
2.7 KiB
Diff
--- a/net/minecraft/server/CommandTeleport.java
|
|
+++ b/net/minecraft/server/CommandTeleport.java
|
|
@@ -12,6 +12,11 @@
|
|
import java.util.Iterator;
|
|
import java.util.Set;
|
|
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 {
|
|
|
|
@@ -47,7 +52,7 @@
|
|
while (iterator.hasNext()) {
|
|
Entity entity1 = (Entity) iterator.next();
|
|
|
|
- a(commandlistenerwrapper, entity1, commandlistenerwrapper.getWorld(), entity.locX, entity.locY, entity.locZ, EnumSet.noneOf(PacketPlayOutPosition.EnumPlayerTeleportFlags.class), entity.yaw, entity.pitch, (CommandTeleport.a) null);
|
|
+ a(commandlistenerwrapper, entity1, (WorldServer) entity.world, entity.locX, entity.locY, entity.locZ, EnumSet.noneOf(PacketPlayOutPosition.EnumPlayerTeleportFlags.class), entity.yaw, entity.pitch, (CommandTeleport.a) null); // SPIGOT-4245, MC-128441 - use target world as destination
|
|
}
|
|
|
|
if (collection.size() == 1) {
|
|
@@ -118,9 +123,9 @@
|
|
}
|
|
|
|
if (worldserver == entity.world) {
|
|
- ((EntityPlayer) entity).playerConnection.a(d0, d1, d2, f, f1, set);
|
|
+ ((EntityPlayer) entity).playerConnection.a(d0, d1, d2, f, f1, set, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.COMMAND); // CraftBukkit
|
|
} else {
|
|
- ((EntityPlayer) entity).a(worldserver, d0, d1, d2, f, f1);
|
|
+ ((EntityPlayer) entity).a(worldserver, d0, d1, d2, f, f1, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.COMMAND); // CraftBukkit
|
|
}
|
|
|
|
entity.setHeadRotation(f);
|
|
@@ -129,6 +134,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);
|