package nl.sugcube.crystalquest.items;
import nl.sugcube.crystalquest.CrystalQuest;
import nl.sugcube.crystalquest.economy.Multipliers;
import nl.sugcube.crystalquest.game.Arena;
import nl.sugcube.crystalquest.game.ArenaManager;
import nl.sugcube.crystalquest.game.CrystalQuestTeam;
import org.bukkit.EntityEffect;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.Player;
import org.bukkit.entity.Wolf;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.Random;
/**
* @author SugarCaney
*/
public class WolfHeart extends ItemExecutor {
private static Random random = new Random();
public WolfHeart() {
super(Material.BONE);
}
@Override
boolean execute(CrystalQuest plugin, Player player, ItemStack itemStack) {
// Get wolf buffs.
int strengthLevel = (int)Multipliers.getMultiplier(
"wolfstrength",
plugin.economy.getLevel(player, "wolf", "upgrade"),
false
) - 1;
int resistanceLevel = (int)Multipliers.getMultiplier(
"wolfresistance",
plugin.economy.getLevel(player, "wolf", "upgrade"),
false
) - 1;
// Spawn wolfie
ArenaManager arenaManager = plugin.getArenaManager();
Arena arena = arenaManager.getArena(player.getUniqueId());
CrystalQuestTeam team = arenaManager.getTeam(player);
World world = player.getWorld();
Wolf wolf = world.spawn(player.getLocation(), Wolf.class);
wolf.setOwner(player);
wolf.setAdult();
wolf.setCustomName(team.getChatColour() + getWolfName());
wolf.setCollarColor(team.getDyeColour());
wolf.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(20);
// Add potion effects
wolf.addPotionEffect(
new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 9999, strengthLevel));
if (resistanceLevel >= 0) {
wolf.addPotionEffect(
new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 9999, resistanceLevel));
}
// Random effects
wolf.playEffect(EntityEffect.WOLF_HEARTS);
world.playSound(wolf.getLocation(), Sound.ENTITY_WOLF_GROWL, 3L, 3L);
arena.getGameWolfs().add(wolf);
return true;
}
/**
* Just get a random name from a huge list of names :)
*
* @return (String) The random name
*/
private String getWolfName() {
return ItemHandler.dogNames.get(random.nextInt(ItemHandler.dogCount));
}
}