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 me.libraryaddict.disguise.disguisetypes.watchers.SlimeWatcher;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.util.Vector;
/**
* Represents an instance of a slime morph summoned by a player.
*
* @author iSach
* @since 08-26-2015
*/
public class MorphSlime extends Morph {
private boolean cooldown;
public MorphSlime(UltraPlayer owner, UltraCosmetics ultraCosmetics) {
super(owner, MorphType.SLIME, ultraCosmetics);
}
@EventHandler
public void onKick(PlayerKickEvent event) {
if (event.getPlayer() == getPlayer() && getOwner().getCurrentMorph() == this && event.getReason().equalsIgnoreCase("Flying is not enabled on this server"))
event.setCancelled(true);
}
@EventHandler
public void onPlayerToggleSneak(PlayerToggleSneakEvent event) {
if (event.getPlayer() == getPlayer() && getOwner().getCurrentMorph() == this && !cooldown) {
MathUtils.applyVelocity(getPlayer(), new Vector(0, 2.3, 0));
cooldown = true;
Bukkit.getScheduler().runTaskLaterAsynchronously(getUltraCosmetics(), new Runnable() {
@Override
public void run() {
cooldown = false;
}
}, 80);
}
}
@EventHandler
public void onDamage(EntityDamageEvent event) {
if (event.getEntity() == getPlayer() && getOwner().getCurrentMorph() == this && event.getCause() == EntityDamageEvent.DamageCause.FALL)
event.setCancelled(true);
}
@Override
protected void onEquip() {
super.onEquip();
SlimeWatcher slimeWatcher = (SlimeWatcher) disguise.getWatcher();
slimeWatcher.setSize(3);
}
@Override
public void onUpdate() {
}
@Override
protected void onClear() {
}
}