package be.isach.ultracosmetics.cosmetics.mounts;
import be.isach.ultracosmetics.UltraCosmetics;
import be.isach.ultracosmetics.UltraCosmeticsData;
import be.isach.ultracosmetics.config.SettingsManager;
import be.isach.ultracosmetics.cosmetics.type.MountType;
import be.isach.ultracosmetics.player.UltraPlayer;
import be.isach.ultracosmetics.util.BlockUtils;
import be.isach.ultracosmetics.util.Particles;
import be.isach.ultracosmetics.util.UtilParticles;
import org.bukkit.Material;
import org.bukkit.entity.Horse;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerMoveEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Represents an instance of a mount of fire mount.
*
* @author iSach
* @since 08-10-2015
*/
public class MountOfFire extends MountHorse {
public MountOfFire(UltraPlayer owner, UltraCosmetics ultraCosmetics) {
super(owner, MountType.MOUNTOFFIRE, ultraCosmetics);
}
@Override
public void onEquip() {
super.onEquip();
entity.setJumpStrength(0.7);
UltraCosmeticsData.get().getVersionManager().getEntityUtil().setHorseSpeed(entity, 0.4d);
}
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
if (event.getPlayer() == getPlayer()
&& getOwner().getCurrentMount() == this
&& (boolean) SettingsManager.getConfig().get("Mounts-Block-Trails")) {
List<Byte> datas = new ArrayList<>();
datas.add((byte) 0x1);
datas.add((byte) 0x4);
datas.add((byte) 0xe);
BlockUtils.getBlocksInRadius(event.getPlayer().getLocation(), 3, false).stream().filter(b -> b.getLocation().getBlockY() == event.getPlayer().getLocation().getBlockY() - 1).forEachOrdered(b -> BlockUtils.setToRestore(b, Material.STAINED_CLAY, datas.get(new Random().nextInt(2)), 20));
}
}
@Override
public void onUpdate() {
UtilParticles.display(Particles.FLAME, 0.4f, 0.2f, 0.4f, entity.getLocation().clone().add(0, 1, 0), 5);
}
@Override
protected Horse.Color getColor() {
return Horse.Color.CREAMY;
}
@Override
protected Horse.Variant getVariant() {
return Horse.Variant.HORSE;
}
}