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.EntitySpawningManager; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.inventory.HorseInventory; import org.bukkit.inventory.ItemStack; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.scheduler.BukkitRunnable; /** * Created by sacha on 11/01/17. */ public abstract class MountHorse extends Mount<Horse> { 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(); EntitySpawningManager.setBypass(true); this.entity = (Horse) 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(); }