package com.gmail.nuclearcat1337.kits; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.projectiles.ProjectileSource; import com.gmail.nuclearcat1337.anniPro.anniGame.AnniPlayer; import com.gmail.nuclearcat1337.anniPro.kits.KitUtils; import com.gmail.nuclearcat1337.anniPro.kits.Loadout; import com.gmail.nuclearcat1337.base.SpecialItemKit; public class Pyro extends SpecialItemKit { private Random rand; @Override protected void onInitialize() { rand = new Random(System.currentTimeMillis()); } @Override protected ItemStack specialItem() { ItemStack firestorm = KitUtils.addSoulbound(new ItemStack(Material.FIREBALL)); ItemMeta meta = firestorm.getItemMeta(); meta.setDisplayName(getSpecialItemName()+" "+ChatColor.GREEN+"READY"); firestorm.setItemMeta(meta); return firestorm; } @Override protected String defaultSpecialItemName() { return ChatColor.AQUA+"Firestorm"; } @Override protected boolean isSpecialItem(ItemStack stack) { if(stack != null && stack.hasItemMeta() && stack.getItemMeta().hasDisplayName()) { String name = stack.getItemMeta().getDisplayName(); if(name.contains(getSpecialItemName()) && KitUtils.isSoulbound(stack)) return true; } return false; } @Override protected boolean performSpecialAction(Player player, AnniPlayer p) { if(p.getTeam() != null) { for(Entity e : player.getNearbyEntities(5, 5, 5)) { if(e.getType() == EntityType.PLAYER) { AnniPlayer d = AnniPlayer.getPlayer(e.getUniqueId()); if(d != null && d.getTeam() != null && !d.getTeam().equals(p.getTeam())) e.setFireTicks(40); } } player.sendMessage(ChatColor.DARK_RED+ChatColor.stripColor(getSpecialItemName()).toUpperCase()+"!"); return true; } else return false; } @Override protected long getDelayLength() { return 40000; } @Override protected String getInternalName() { return "Pyro"; } @Override protected ItemStack getIcon() { return new ItemStack(Material.FIRE); } @Override protected List<String> getDefaultDescription() { List<String> l = new ArrayList<String>(); addToList(l,new String[] { aqua+"You are the flame.", aqua+"", aqua+"You are not afraid of", aqua+"lava and fire because", aqua+"you are immune, but your", aqua+"enemies are not.", aqua+"", aqua+"Every hit you land has", aqua+"a chance of igniting your", aqua+"enemy.", }); return l; } @Override public void cleanup(Player player) { if(player != null) player.removePotionEffect(PotionEffectType.FIRE_RESISTANCE); } @Override public void onPlayerSpawn(Player player) { player.addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, Integer.MAX_VALUE, 0)); super.onPlayerSpawn(player); // KitUtils.giveTeamArmor(player); // player.getInventory().addItem(KitUtils.getStoneSword()); // player.getInventory().addItem(KitUtils.getWoodPick()); // player.getInventory().addItem(KitUtils.getWoodAxe()); // player.getInventory().addItem(KitUtils.getHealthPotion1()); // super.giveSpecialItem(player); // player.getInventory().addItem(KitUtils.getNavCompass()); } @Override protected Loadout getFinalLoadout() { return new Loadout().addStoneSword().addWoodPick().addWoodAxe().addHealthPotion1().addItem(super.getSpecialItem()); } //Lites their arrow on fire @EventHandler(priority = EventPriority.HIGHEST,ignoreCancelled = true) public void arrowLaunch(final ProjectileLaunchEvent event) { if(event.getEntityType() == EntityType.ARROW) { ProjectileSource shooter = event.getEntity().getShooter(); if(shooter instanceof Player) { AnniPlayer p = AnniPlayer.getPlayer(((Player) shooter).getUniqueId()); if(p != null && p.getKit().equals(this)) event.getEntity().setFireTicks(999999); } } } //Adds the chance to ignite enemies when you hit them @EventHandler(priority = EventPriority.HIGHEST,ignoreCancelled = true) public void damageListener(final EntityDamageByEntityEvent event) { Entity one = event.getDamager(); if(one.getType() == EntityType.PLAYER && event.getEntity().getType() == EntityType.PLAYER) { Player damager = (Player)one; AnniPlayer d = AnniPlayer.getPlayer(damager.getUniqueId()); if(d != null && d.getKit().equals(this)) { if(rand.nextInt(100) < 37) event.getEntity().setFireTicks(40); } } } @Override protected boolean useDefaultChecking() { return true; } }