55 lines
2.8 KiB
Diff
55 lines
2.8 KiB
Diff
--- a/net/minecraft/world/level/block/entity/TileEntityEndGateway.java
|
|
+++ b/net/minecraft/world/level/block/entity/TileEntityEndGateway.java
|
|
@@ -33,6 +33,14 @@
|
|
import net.minecraft.world.phys.Vec3D;
|
|
import org.slf4j.Logger;
|
|
|
|
+// CraftBukkit start
|
|
+import net.minecraft.world.level.dimension.WorldDimension;
|
|
+import org.bukkit.Bukkit;
|
|
+import org.bukkit.Location;
|
|
+import org.bukkit.craftbukkit.entity.CraftPlayer;
|
|
+import org.bukkit.event.player.PlayerTeleportEvent;
|
|
+// CraftBukkit end
|
|
+
|
|
public class TileEntityEndGateway extends TileEntityEnderPortal {
|
|
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
@@ -169,7 +177,7 @@
|
|
tileentityendgateway.teleportCooldown = 100;
|
|
BlockPosition blockposition1;
|
|
|
|
- if (tileentityendgateway.exitPortal == null && world.dimension() == World.END) {
|
|
+ if (tileentityendgateway.exitPortal == null && world.getTypeKey() == WorldDimension.END) { // CraftBukkit - work in alternate worlds
|
|
blockposition1 = findOrCreateValidTeleportPos(worldserver, blockposition);
|
|
blockposition1 = blockposition1.above(10);
|
|
TileEntityEndGateway.LOGGER.debug("Creating portal at {}", blockposition1);
|
|
@@ -198,6 +206,27 @@
|
|
entity1 = entity.getRootVehicle();
|
|
}
|
|
|
|
+ // CraftBukkit start - Fire PlayerTeleportEvent
|
|
+ if (entity1 instanceof EntityPlayer) {
|
|
+ org.bukkit.craftbukkit.entity.CraftPlayer player = (CraftPlayer) entity1.getBukkitEntity();
|
|
+ org.bukkit.Location location = new Location(world.getWorld(), (double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.5D, (double) blockposition1.getZ() + 0.5D);
|
|
+ location.setPitch(player.getLocation().getPitch());
|
|
+ location.setYaw(player.getLocation().getYaw());
|
|
+
|
|
+ PlayerTeleportEvent teleEvent = new PlayerTeleportEvent(player, player.getLocation(), location, PlayerTeleportEvent.TeleportCause.END_GATEWAY);
|
|
+ Bukkit.getPluginManager().callEvent(teleEvent);
|
|
+ if (teleEvent.isCancelled()) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ entity1.setPortalCooldown();
|
|
+ ((EntityPlayer) entity1).connection.teleport(teleEvent.getTo());
|
|
+ triggerCooldown(world, blockposition, iblockdata, tileentityendgateway); // CraftBukkit - call at end of method
|
|
+ return;
|
|
+
|
|
+ }
|
|
+ // CraftBukkit end
|
|
+
|
|
entity1.setPortalCooldown();
|
|
entity1.teleportToWithTicket((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY(), (double) blockposition1.getZ() + 0.5D);
|
|
}
|