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 org.bukkit.Bukkit; import org.bukkit.entity.Creature; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; /** * Represents an instance of a pig morph summoned by a player. * * @author iSach * @since 08-27-2015 */ public class MorphPig extends Morph { private boolean cooldown = false; public MorphPig(UltraPlayer owner, UltraCosmetics ultraCosmetics) { super(owner, MorphType.PIG, ultraCosmetics); } @Override public void onUpdate() { for(Entity ent : getPlayer().getNearbyEntities(0.2, 0.2, 0.2)) { if(ent instanceof Creature || ent instanceof Player) { if(!ent.hasMetadata("Mount") && !ent.hasMetadata("Pet") && ent != getPlayer() && ent != disguise.getEntity() && !cooldown) { cooldown = true; Bukkit.getScheduler().runTaskLater(getUltraCosmetics(), () -> cooldown = false, 20); SoundUtil.playSound(getPlayer(), Sounds.PIG_IDLE, .2f, 1.5f); Vector v = new Vector(0, 0.6, 0); Vector vEnt = ent.getLocation().toVector().subtract(getPlayer().getLocation().toVector()).add(v); Vector vPig = getPlayer().getLocation().toVector().subtract(ent.getLocation().toVector()).add(v); vEnt.setY(0.5); vPig.setY(0.5); MathUtils.applyVelocity(ent, vEnt.multiply(0.75)); MathUtils.applyVelocity(getPlayer(), vPig.multiply(0.75)); } } } } @Override protected void onClear() { } }