--- ../work/decompile-8eb82bde/net/minecraft/server/EntityEnderPearl.java 2015-01-05 10:11:38.333916086 +1100 +++ src/main/java/net/minecraft/server/EntityEnderPearl.java 2015-01-05 10:11:38.333916086 +1100 @@ -1,7 +1,20 @@ package net.minecraft.server; +// CraftBukkit start +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.bukkit.event.player.PlayerTeleportEvent; +// CraftBukkit end + public class EntityEnderPearl extends EntityProjectile { + // CraftBukkit start + // This is backported from 1.8.1 + public EntityEnderPearl(World world) { + super(world); + } + // CraftBukkit end + public EntityEnderPearl(World world, EntityLiving entityliving) { super(world, entityliving); } @@ -29,14 +42,28 @@ entityendermite.setPositionRotation(entityliving.locX, entityliving.locY, entityliving.locZ, entityliving.yaw, entityliving.pitch); this.world.addEntity(entityendermite); } - - if (entityliving.av()) { - entityliving.mount((Entity) null); + + // CraftBukkit start - Fire PlayerTeleportEvent + org.bukkit.craftbukkit.entity.CraftPlayer player = entityplayer.getBukkitEntity(); + org.bukkit.Location location = getBukkitEntity().getLocation(); + location.setPitch(player.getLocation().getPitch()); + location.setYaw(player.getLocation().getYaw()); + + PlayerTeleportEvent teleEvent = new PlayerTeleportEvent(player, player.getLocation(), location, PlayerTeleportEvent.TeleportCause.ENDER_PEARL); + Bukkit.getPluginManager().callEvent(teleEvent); + + if (!teleEvent.isCancelled() && !entityplayer.playerConnection.isDisconnected()) { + if (entityliving.av()) { + entityliving.mount((Entity) null); + } + + entityplayer.playerConnection.teleport(teleEvent.getTo()); + entityliving.fallDistance = 0.0F; + CraftEventFactory.entityDamage = this; + entityliving.damageEntity(DamageSource.FALL, 5.0F); + CraftEventFactory.entityDamage = null; } - - entityliving.enderTeleportTo(this.locX, this.locY, this.locZ); - entityliving.fallDistance = 0.0F; - entityliving.damageEntity(DamageSource.FALL, 5.0F); + // CraftBukkit end } }