package net.minecraft.server;
// CraftBukkit start
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent;
// CraftBukkit end
public class ItemChorusFruit extends ItemFood {
public ItemChorusFruit(int i, float f) {
super(i, f, false);
}
public ItemStack a(ItemStack itemstack, World world, EntityLiving entityliving) {
ItemStack itemstack1 = super.a(itemstack, world, entityliving);
if (!world.isClientSide) {
double d0 = entityliving.locX;
double d1 = entityliving.locY;
double d2 = entityliving.locZ;
for (int i = 0; i < 16; ++i) {
double d3 = entityliving.locX + (entityliving.getRandom().nextDouble() - 0.5D) * 16.0D;
double d4 = MathHelper.a(entityliving.locY + (double) (entityliving.getRandom().nextInt(16) - 8), 0.0D, (double) (world.Z() - 1));
double d5 = entityliving.locZ + (entityliving.getRandom().nextDouble() - 0.5D) * 16.0D;
// CraftBukkit start
if (entityliving instanceof EntityPlayer) {
Player player = ((EntityPlayer) entityliving).getBukkitEntity();
PlayerTeleportEvent teleEvent = new PlayerTeleportEvent(player, player.getLocation(), new Location(player.getWorld(), d3, d4, d5), PlayerTeleportEvent.TeleportCause.CHORUS_FRUIT);
world.getServer().getPluginManager().callEvent(teleEvent);
if (teleEvent.isCancelled()) {
break;
}
d3 = teleEvent.getTo().getX();
d4 = teleEvent.getTo().getY();
d5 = teleEvent.getTo().getZ();
}
// CraftBukkit end
if (entityliving.isPassenger()) {
entityliving.stopRiding();
}
if (entityliving.j(d3, d4, d5)) {
world.a((EntityHuman) null, d0, d1, d2, SoundEffects.ah, SoundCategory.PLAYERS, 1.0F, 1.0F);
entityliving.a(SoundEffects.ah, 1.0F, 1.0F);
break;
}
}
if (entityliving instanceof EntityHuman) {
((EntityHuman) entityliving).di().a(this, 20);
}
}
return itemstack1;
}
}