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 be.isach.ultracosmetics.util.UtilParticles;
import org.bukkit.DyeColor;
import org.bukkit.Location;
import org.bukkit.entity.Creature;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Sheep;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Represents an instance of a nyansheep mount.
*
* @author iSach
* @since 08-17-2015
*/
public class MountNyanSheep extends Mount<Sheep> {
public MountNyanSheep(UltraPlayer owner, UltraCosmetics ultraCosmetics) {
super(owner, MountType.NYANSHEEP, ultraCosmetics);
}
@Override
public void onEquip() {
super.onEquip();
((LivingEntity) entity).setNoDamageTicks(Integer.MAX_VALUE);
UltraCosmeticsData.get().getVersionManager().getEntityUtil().clearPathfinders(entity);
}
@Override
public void onUpdate() {
move();
((Sheep) entity).setColor(DyeColor.values()[new Random().nextInt(15)]);
List<RGBColor> colors = new ArrayList<>();
colors.add(new RGBColor(255, 0, 0));
colors.add(new RGBColor(255, 165, 0));
colors.add(new RGBColor(255, 255, 0));
colors.add(new RGBColor(154, 205, 50));
colors.add(new RGBColor(30, 144, 255));
colors.add(new RGBColor(148, 0, 211));
float y = 1.2f;
for (RGBColor rgbColor : colors) {
for (int i = 0; i < 10; i++)
UtilParticles.display(rgbColor.getRed(), rgbColor.getGreen(), rgbColor.getBlue(),
entity.getLocation().add(entity.getLocation().getDirection()
.normalize().multiply(-1).multiply(1.4)).add(0, y, 0));
y -= 0.2;
}
}
private void move() {
if (getPlayer() == null)
return;
try {
Player player = getPlayer();
Vector vel = player.getLocation().getDirection().setY(0).normalize().multiply(4);
Location loc = player.getLocation().add(vel);
UltraCosmeticsData.get().getVersionManager().getEntityUtil().move((Creature) entity, loc);
} catch (Exception exc) {
getOwner().removeMount();
}
}
private class RGBColor {
int red;
int green;
int blue;
public RGBColor(int red, int green, int blue) {
this.red = red;
this.green = green;
this.blue = blue;
}
public int getBlue() {
return blue;
}
public int getGreen() {
return green;
}
public int getRed() {
return red;
}
}
}