2015-03-22 17:38:04 +00:00
|
|
|
--- ../src-base/minecraft/net/minecraft/entity/item/EntityEnderPearl.java
|
|
|
|
+++ ../src-work/minecraft/net/minecraft/entity/item/EntityEnderPearl.java
|
2015-06-05 13:41:54 +00:00
|
|
|
@@ -12,6 +12,13 @@
|
2015-03-22 17:38:04 +00:00
|
|
|
import net.minecraftforge.common.MinecraftForge;
|
|
|
|
import net.minecraftforge.event.entity.living.EnderTeleportEvent;
|
|
|
|
|
2015-06-05 13:41:54 +00:00
|
|
|
+
|
2015-03-22 17:38:04 +00:00
|
|
|
+// CraftBukkit start
|
|
|
|
+import org.bukkit.Bukkit;
|
|
|
|
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
|
|
+import org.bukkit.event.player.PlayerTeleportEvent;
|
|
|
|
+// CraftBukkit end
|
|
|
|
+
|
|
|
|
public class EntityEnderPearl extends EntityThrowable
|
|
|
|
{
|
|
|
|
private static final String __OBFID = "CL_00001725";
|
2015-06-05 13:41:54 +00:00
|
|
|
@@ -52,22 +59,42 @@
|
2015-03-22 17:38:04 +00:00
|
|
|
|
|
|
|
if (entityplayermp.playerNetServerHandler.func_147362_b().isChannelOpen() && entityplayermp.worldObj == this.worldObj)
|
|
|
|
{
|
|
|
|
- EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 5.0F);
|
|
|
|
- if (!MinecraftForge.EVENT_BUS.post(event))
|
|
|
|
- { // Don't indent to lower patch size
|
|
|
|
- if (this.getThrower().isRiding())
|
|
|
|
- {
|
|
|
|
- this.getThrower().mountEntity((Entity)null);
|
|
|
|
+ EnderTeleportEvent event = new EnderTeleportEvent(entityplayermp, this.posX, this.posY, this.posZ, 5);
|
|
|
|
+ // Cauldron start - invert condition; return if cancelled otherwise fall through to CB event
|
|
|
|
+ if (MinecraftForge.EVENT_BUS.post(event)){
|
|
|
|
+ this.setDead();
|
|
|
|
+ return;
|
|
|
|
}
|
|
|
|
+ // Cauldron end
|
|
|
|
+ // CraftBukkit start
|
|
|
|
+ org.bukkit.craftbukkit.entity.CraftPlayer player = entityplayermp.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);
|
|
|
|
|
|
|
|
- this.getThrower().setPositionAndUpdate(event.targetX, event.targetY, event.targetZ);
|
|
|
|
- this.getThrower().fallDistance = 0.0F;
|
|
|
|
- this.getThrower().attackEntityFrom(DamageSource.fall, event.attackDamage);
|
|
|
|
+ if (!teleEvent.isCancelled() && !entityplayermp.playerNetServerHandler.isDisconnected())
|
|
|
|
+ {
|
|
|
|
+ entityplayermp.playerNetServerHandler.teleport(teleEvent.getTo());
|
|
|
|
+ this.getThrower().fallDistance = 0.0F;
|
|
|
|
+ CraftEventFactory.entityDamage = this;
|
|
|
|
+ this.getThrower().attackEntityFrom(DamageSource.fall, 5.0F);
|
|
|
|
+ CraftEventFactory.entityDamage = null;
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+ // CraftBukkit end
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-06-05 13:41:54 +00:00
|
|
|
this.setDead();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+ // Cauldron start
|
|
|
|
+ @Override
|
|
|
|
+ public boolean entityProjectileHook() {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ // Cauldron end
|
|
|
|
}
|