package be.isach.ultracosmetics.cosmetics.mounts;
import be.isach.ultracosmetics.UltraCosmetics;
import be.isach.ultracosmetics.UltraCosmeticsData;
import be.isach.ultracosmetics.cosmetics.type.MountType;
import be.isach.ultracosmetics.player.UltraPlayer;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.EnderDragonPart;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.util.Vector;
/**
* Represents an instance of a enderdragon mount.
*
* @author iSach
* @since 08-17-2015
*/
public class MountDragon extends Mount<EnderDragon> {
public MountDragon(UltraPlayer owner, UltraCosmetics ultraCosmetics) {
super(owner, MountType.DRAGON, ultraCosmetics);
}
@Override
public void onUpdate() {
if (entity.getPassenger() == null)
clear();
Vector vector = getPlayer().getLocation().toVector();
double rotX = getPlayer().getLocation().getYaw();
double rotY = getPlayer().getLocation().getPitch();
vector.setY(-Math.sin(Math.toRadians(rotY)));
double h = Math.cos(Math.toRadians(rotY));
vector.setX(-h * Math.sin(Math.toRadians(rotX)));
vector.setZ(h * Math.cos(Math.toRadians(rotX)));
UltraCosmeticsData.get().getVersionManager().getEntityUtil().moveDragon(getPlayer(), vector, entity);
}
@EventHandler
public void stopDragonDamage(EntityExplodeEvent event) {
Entity e = event.getEntity();
if (e instanceof EnderDragonPart)
e = ((EnderDragonPart) e).getParent();
if (e instanceof EnderDragon && e == entity)
event.setCancelled(true);
}
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent event) {
Entity e = event.getDamager();
if (e instanceof EnderDragonPart) {
e = ((EnderDragonPart) e).getParent();
}
if (e instanceof EnderDragon && e == entity) {
event.setCancelled(true);
}
}
}