package be.isach.ultracosmetics.v1_11_R1.mount;
import be.isach.ultracosmetics.UltraCosmetics;
import be.isach.ultracosmetics.UltraCosmeticsData;
import be.isach.ultracosmetics.cosmetics.mounts.Mount;
import be.isach.ultracosmetics.cosmetics.type.MountType;
import be.isach.ultracosmetics.player.UltraPlayer;
import be.isach.ultracosmetics.util.EntitySpawningManager;
import org.bukkit.Material;
import org.bukkit.entity.*;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
/**
* Created by sacha on 1/03/17.
*/
public abstract class MountHorse<E extends AbstractHorse> extends Mount<E> {
public MountHorse(UltraPlayer ultraPlayer, MountType type, UltraCosmetics ultraCosmetics) {
super(ultraPlayer, type, ultraCosmetics);
}
/**
* Equips the pet.
*/
@Override
public void onEquip() {
if (getOwner().getCurrentMount() != null) {
getOwner().removeMount();
}
EntityType entityType = getType().getEntityType();
if (getVariant() == Horse.Variant.DONKEY) {
entityType = EntityType.DONKEY;
} else if (getVariant() == Horse.Variant.SKELETON_HORSE) {
entityType = EntityType.SKELETON_HORSE;
} else if (getVariant() == Horse.Variant.MULE) {
entityType = EntityType.MULE;
} else if (getVariant() == Horse.Variant.UNDEAD_HORSE) {
entityType = EntityType.ZOMBIE_HORSE;
}
EntitySpawningManager.setBypass(true);
this.entity = (E) getPlayer().getWorld().spawnEntity(getPlayer().getLocation(), entityType);
EntitySpawningManager.setBypass(false);
if (entity instanceof Ageable) {
entity.setAdult();
} else {
if (entity instanceof Slime) {
((Slime) entity).setSize(4);
}
}
entity.setCustomNameVisible(true);
entity.setCustomName(getType().getName(getPlayer()));
entity.setPassenger(getPlayer());
entity.setTamed(true);
entity.setDomestication(1);
if (entity instanceof Horse){
((Horse)entity).getInventory().setSaddle(new ItemStack(Material.SADDLE));
((Horse)entity).setColor(getColor());
}
runTaskTimerAsynchronously(UltraCosmeticsData.get().getPlugin(), 0, getType().getRepeatDelay());
entity.setMetadata("Mount", new FixedMetadataValue(UltraCosmeticsData.get().getPlugin(), "UltraCosmetics"));
getOwner().setCurrentMount(this);
}
@Override
public void onUpdate() {
}
abstract protected Horse.Variant getVariant();
abstract protected Horse.Color getColor();
}