package be.isach.ultracosmetics.cosmetics.morphs;
import be.isach.ultracosmetics.UltraCosmetics;
import be.isach.ultracosmetics.cosmetics.type.MorphType;
import be.isach.ultracosmetics.player.UltraPlayer;
import be.isach.ultracosmetics.util.MathUtils;
import be.isach.ultracosmetics.util.SoundUtil;
import be.isach.ultracosmetics.util.Sounds;
import me.libraryaddict.disguise.DisguiseAPI;
import org.bukkit.GameMode;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.util.Vector;
/**
* Represents an instance of a bat morph summoned by a player.
*
* @author iSach
* @since 08-26-2015
*/
public class MorphBat extends Morph {
public MorphBat(UltraPlayer owner, UltraCosmetics ultraCosmetics) {
super(owner, MorphType.BAT, ultraCosmetics);
}
@Override
protected void onEquip() {
super.onEquip();
getPlayer().setAllowFlight(true);
}
@Override
public void onUpdate() {
//--
}
@EventHandler
public void onPlayerToggleFligh(PlayerToggleFlightEvent event) {
if (event.getPlayer() == getPlayer()
&& event.getPlayer().getGameMode() != GameMode.CREATIVE
&& !event.getPlayer().isFlying()) {
Vector v = event.getPlayer().getLocation().getDirection();
v.setY(0.75);
MathUtils.applyVelocity(getPlayer(), v);
event.getPlayer().setFlying(false);
event.setCancelled(true);
SoundUtil.playSound(getPlayer(), Sounds.BAT_LOOP, 0.4f, 1.0f);
}
}
@Override
public void onClear() {
if (getPlayer().getGameMode() != GameMode.CREATIVE) {
getPlayer().setAllowFlight(false);
}
}
}