package nautilus.game.arcade.kit.perks; import java.util.HashSet; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.EnderPearl; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.LeatherArmorMeta; import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilBlock; import mineplex.core.recharge.*; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.kit.Perk; public class PerkPaintballRifle extends Perk { private HashSet _balls = new HashSet(); public PerkPaintballRifle() { super("Rifle", new String[] { C.cYellow + "Right-Click" + C.cGray + " to use " + C.cGreen + "Rifle" }); } @EventHandler public void Recharge(RechargedEvent event) { if (!event.GetAbility().equals(GetName())) return; event.GetPlayer().playSound(event.GetPlayer().getLocation(), Sound.NOTE_STICKS, 2f, 1.5f); } @EventHandler public void Shoot(PlayerInteractEvent event) { if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) return; if (UtilBlock.usable(event.getClickedBlock())) return; if (event.getPlayer().getItemInHand() == null) return; if (event.getPlayer().getItemInHand().getType() != Material.IRON_BARDING) return; Player player = event.getPlayer(); if (!Kit.HasKit(player)) return; GameTeam team = Manager.GetGame().GetTeam(player); if (team == null) return; if (!Recharge.Instance.use(player, GetName(), 400, true)) return; event.setCancelled(true); if (team.GetColor() == ChatColor.AQUA) { Projectile proj = player.launchProjectile(Snowball.class); proj.setVelocity(proj.getVelocity().multiply(2)); _balls.add(proj); //Sound player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.5f); } else { Projectile proj = player.launchProjectile(EnderPearl.class); proj.setVelocity(proj.getVelocity().multiply(2)); _balls.add(proj); //Sound player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 1.5f, 1.2f); } } @EventHandler public void Damage(CustomDamageEvent event) { if (event.GetProjectile() == null) return; if (!_balls.contains(event.GetProjectile())) return; //Negate event.AddMod("Negate", "Negate", -event.GetDamageInitial(), false); event.AddMod("Paintball", "Rifle", 16, true); if (event.GetDamageePlayer() == null) return; double r = Math.random(); ItemStack item = null; if (r > 0.75) item= event.GetDamageePlayer().getInventory().getHelmet(); else if (r > 0.50) item= event.GetDamageePlayer().getInventory().getChestplate(); else if (r > 0.25) item= event.GetDamageePlayer().getInventory().getLeggings(); else item= event.GetDamageePlayer().getInventory().getBoots(); LeatherArmorMeta meta = (LeatherArmorMeta)item.getItemMeta(); //Color if (event.GetProjectile() instanceof Snowball) meta.setColor(Color.AQUA); else meta.setColor(Color.FUCHSIA); item.setItemMeta(meta); } }