@EventHandler(priority = EventPriority.HIGHEST) public void onEntityDeath(EntityDeathEvent event) { Entity died = event.getEntity(); if (died instanceof Player) { Player pdied = (Player) died; if (plugin.isInArena(pdied)) { event.getDrops().clear(); plugin.getArena(pdied).onPlayerDeath(plugin.getArenaPlayer(pdied)); } } EntityDamageEvent dev = event.getEntity().getLastDamageCause(); if (dev != null) { if (dev.getEntity() != null) { if (dev.getEntity() instanceof Player) { Player dead = (Player) event.getEntity(); if (dev.getCause() != null) { DamageCause dc = dev.getCause(); if (dc.equals(DamageCause.ENTITY_ATTACK)) { Entity damager = ((EntityDamageByEntityEvent) dev).getDamager(); if (plugin.isInArena(dead)) { String attackerName = damager.getType().getName(); if (damager instanceof Player) { attackerName = ((Player) damager).getName(); } event.getDrops().clear(); ArenaPlayer dp = plugin.getArenaPlayer(dead); dp.killstreak = 0; dp.deaths++; String line1 = ChatColor.GREEN + attackerName + ChatColor.WHITE + " 杀死了 " + ChatColor.RED + dead.getName(); String line2 = ChatColor.RED + dead.getName() + " 你已被 " + attackerName + " 击杀"; String line3 = ChatColor.RED + "----------------------------"; String line4 = ChatColor.RED + "杀敌: " + dp.kills; String line5 = ChatColor.RED + "死亡: " + dp.deaths; String line6 = ChatColor.RED + "----------------------------"; dead.sendMessage(line1); dead.sendMessage(line2); dead.sendMessage(line3); dead.sendMessage(line4); dead.sendMessage(line5); dead.sendMessage(line6); if (damager instanceof Player) { Player attacker = (Player) ((EntityDamageByEntityEvent) dev).getDamager(); if (plugin.isInArena(attacker)) { ArenaPlayer ap = plugin.getArenaPlayer(attacker); ap.kills++; ap.killstreak++; ap.XP += 100; line2 = ChatColor.RED + "杀死了 " + dead.getName() + " +100 XP"; line4 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(attacker).kills; line5 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(attacker).deaths; attacker.sendMessage(line1); attacker.sendMessage(line2); attacker.sendMessage(line3); attacker.sendMessage(line4); attacker.sendMessage(line5); attacker.sendMessage(line6); Arena ar = plugin.getArena(attacker); ar.doKillStreak(plugin.getArenaPlayer(attacker)); // Call kill event UltimateArenaKillEvent killEvent = new UltimateArenaKillEvent(dp, ap, ar); plugin.getServer().getPluginManager().callEvent(killEvent); } } } return; } else if (dc.equals(DamageCause.PROJECTILE)) { if (((EntityDamageByEntityEvent) dev) .getDamager() .getType() .toString() .toLowerCase() .equals("snowball")) { Entity bullet = ((EntityDamageByEntityEvent) dev).getDamager(); if (bullet instanceof Snowball) { if (((Snowball) ((EntityDamageByEntityEvent) dev).getDamager()).getShooter() instanceof Player) { Player gunner = (Player) ((Snowball) ((EntityDamageByEntityEvent) dev).getDamager()) .getShooter(); if (gunner != null && plugin.isInArena(gunner)) { String gunnerp = gunner.getName(); event.getDrops().clear(); // Dead player if (dead instanceof Player) { if (plugin.isInArena(dead.getLocation())) { Player deadplayer = (Player) dead; ArenaPlayer dp = plugin.getArenaPlayer(deadplayer); dp.killstreak = 0; dp.deaths++; String line1 = ChatColor.GREEN + deadplayer.getName() + ChatColor.WHITE + " 已被 " + ChatColor.RED + gunnerp + ChatColor.WHITE + " 杀死"; String line2 = ChatColor.RED + "----------------------------"; String line3 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(deadplayer).kills; String line4 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(deadplayer).deaths; String line5 = ChatColor.RED + "----------------------------"; deadplayer.sendMessage(line1); deadplayer.sendMessage(line2); deadplayer.sendMessage(line3); deadplayer.sendMessage(line4); deadplayer.sendMessage(line5); } } // Killer if (gunner instanceof Player) { if (plugin.isInArena(gunner)) { plugin.getArenaPlayer(gunner).killstreak++; plugin.getArenaPlayer(gunner).kills++; plugin.getArenaPlayer(gunner).XP += 25; String line1 = ChatColor.GREEN + gunnerp + ChatColor.WHITE + " 杀死了 " + ChatColor.RED + dead.getType().getName(); String line2 = ChatColor.RED + "----------------------------"; String line3 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(gunner).kills; String line4 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(gunner).deaths; String line5 = ChatColor.RED + "----------------------------"; gunner.sendMessage(line1); gunner.sendMessage(line2); gunner.sendMessage(line3); gunner.sendMessage(line4); gunner.sendMessage(line5); } } } } } } return; } else { if (plugin.isInArena(dead)) { event.getDrops().clear(); plugin.getArenaPlayer(dead).killstreak = 0; plugin.getArenaPlayer(dead).deaths++; String line2 = ChatColor.RED + dead.getName() + " 你已被 " + dc.toString() + " 杀死"; String line3 = ChatColor.RED + "----------------------------"; String line4 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(dead).kills; String line5 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(dead).deaths; String line6 = ChatColor.RED + "----------------------------"; dead.sendMessage(line2); dead.sendMessage(line3); dead.sendMessage(line4); dead.sendMessage(line5); dead.sendMessage(line6); } return; } } } else { LivingEntity dead = (LivingEntity) event.getEntity(); if (dev.getCause() != null) { DamageCause dc = dev.getCause(); if (dc.equals(DamageCause.PROJECTILE)) { if (((EntityDamageByEntityEvent) dev) .getDamager() .getType() .toString() .equalsIgnoreCase("snowball")) { Entity bullet = ((EntityDamageByEntityEvent) dev).getDamager(); if (bullet instanceof Snowball) { if (((Snowball) ((EntityDamageByEntityEvent) dev).getDamager()).getShooter() instanceof Player) { Player gunner = (Player) ((Snowball) ((EntityDamageByEntityEvent) dev).getDamager()) .getShooter(); if (gunner != null) { String gunnerp = gunner.getName(); event.getDrops().clear(); // Dead player if (dead instanceof Player) { if (plugin.isInArena(dead.getLocation())) { Player deadplayer = (Player) dead; plugin.getArenaPlayer(deadplayer).killstreak = 0; plugin.getArenaPlayer(deadplayer).deaths++; String line1 = ChatColor.GREEN + deadplayer.getName() + ChatColor.WHITE + " 已被 " + ChatColor.RED + gunnerp + ChatColor.WHITE + " 杀死"; String line2 = ChatColor.RED + "----------------------------"; String line3 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(deadplayer).kills; String line4 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(deadplayer).deaths; String line5 = ChatColor.RED + "----------------------------"; deadplayer.sendMessage(line1); deadplayer.sendMessage(line2); deadplayer.sendMessage(line3); deadplayer.sendMessage(line4); deadplayer.sendMessage(line5); } } // Killer if (gunner instanceof Player) { if (plugin.isInArena(gunner)) { plugin.getArenaPlayer(gunner).killstreak++; plugin.getArenaPlayer(gunner).kills++; plugin.getArenaPlayer(gunner).XP += 25; String line1 = ChatColor.GREEN + gunnerp + ChatColor.WHITE + " 杀死了 " + ChatColor.RED + dead.getType().getName(); String line2 = ChatColor.RED + "----------------------------"; String line3 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(gunner).kills; String line4 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(gunner).deaths; String line5 = ChatColor.RED + "----------------------------"; gunner.sendMessage(line1); gunner.sendMessage(line2); gunner.sendMessage(line3); gunner.sendMessage(line4); gunner.sendMessage(line5); } } if ((gunner instanceof Player) && (dead instanceof Player)) { if ((gunner != null) && (dead != null)) { ArenaPlayer ag = plugin.getArenaPlayer(gunner); ArenaPlayer ad = plugin.getArenaPlayer((Player) dead); Arena ar = plugin.getArena(gunner); UltimateArenaKillEvent killEvent = new UltimateArenaKillEvent(ad, ag, ar); plugin.getServer().getPluginManager().callEvent(killEvent); } } } } } } return; } else if (dc.equals(DamageCause.ENTITY_ATTACK)) { Entity damager = ((EntityDamageByEntityEvent) dev).getDamager(); if (damager instanceof Player) { Player attacker = (Player) ((EntityDamageByEntityEvent) dev).getDamager(); if (plugin.isInArena(attacker)) { event.getDrops().clear(); if (plugin.isInArena(attacker.getLocation())) { plugin.getArenaPlayer(attacker).kills++; plugin.getArenaPlayer(attacker).killstreak++; plugin.getArenaPlayer(attacker).XP += 25; String attstr = dead.getType().getName(); String line1 = ChatColor.GREEN + attacker.getName() + ChatColor.WHITE + " 杀死了 " + ChatColor.RED + attstr; String line2 = ChatColor.RED + "杀死了 " + attstr + " +25 XP"; String line3 = ChatColor.RED + "----------------------------"; String line4 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(attacker).kills; String line5 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(attacker).deaths; String line6 = ChatColor.RED + "----------------------------"; attacker.sendMessage(line1); attacker.sendMessage(line2); attacker.sendMessage(line3); attacker.sendMessage(line4); attacker.sendMessage(line5); attacker.sendMessage(line6); Arena ar = plugin.getArena(attacker); ar.doKillStreak(plugin.getArenaPlayer(attacker)); } } } return; } else if (dc.equals(DamageCause.PROJECTILE)) { Entity damager = ((EntityDamageByEntityEvent) dev).getDamager(); if (damager instanceof Arrow) { if (((Arrow) ((EntityDamageByEntityEvent) dev).getDamager()).getShooter() instanceof Player) { Player attacker = (Player) ((Arrow) ((EntityDamageByEntityEvent) dev).getDamager()).getShooter(); if (plugin.isInArena(attacker)) { event.getDrops().clear(); if (plugin.isInArena(attacker.getLocation())) { plugin.getArenaPlayer(attacker).kills++; plugin.getArenaPlayer(attacker).killstreak++; plugin.getArenaPlayer(attacker).XP += 25; String attstr = dead.getType().getName(); String line1 = ChatColor.GREEN + attacker.getName() + ChatColor.WHITE + " 杀死了 " + ChatColor.RED + attstr; String line2 = ChatColor.RED + "杀死了 " + attstr + " +25 XP"; String line3 = ChatColor.RED + "----------------------------"; String line4 = ChatColor.RED + "杀敌: " + plugin.getArenaPlayer(attacker).kills; String line5 = ChatColor.RED + "死亡: " + plugin.getArenaPlayer(attacker).deaths; String line6 = ChatColor.RED + "----------------------------"; attacker.sendMessage(line1); attacker.sendMessage(line2); attacker.sendMessage(line3); attacker.sendMessage(line4); attacker.sendMessage(line5); attacker.sendMessage(line6); Arena ar = plugin.getArena(attacker); ar.doKillStreak(plugin.getArenaPlayer(attacker)); } } } } } } } } } }