package nautilus.game.arcade.stats; import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageByEntityEvent; import mineplex.core.common.util.UtilPlayer; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import nautilus.game.arcade.game.Game; public class TheLongestShotStatTracker extends StatTracker { public TheLongestShotStatTracker(Game game) { super(game); } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onCombatDeath(CombatDeathEvent event) { if (getGame().GetState() != Game.GameState.Live) return; if (event.GetLog().GetKiller() == null) return; if (!event.GetLog().GetKiller().IsPlayer()) return; Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); if (killer == null) return; if (event.GetLog().GetPlayer() == null) return; if (!event.GetLog().GetPlayer().IsPlayer()) return; Player player = UtilPlayer.searchExact(event.GetLog().GetPlayer().GetName()); if (player == null) return; if (event.GetLog().GetLastDamager().GetReason() != null && event.GetLog().GetLastDamager().GetReason().equalsIgnoreCase("longshot")) { if (player.getLastDamageCause() instanceof EntityDamageByEntityEvent) { EntityDamageByEntityEvent edbee = (EntityDamageByEntityEvent) player.getLastDamageCause(); if (edbee.getDamager() instanceof Arrow) { Arrow arrow = (Arrow) edbee.getDamager(); if (arrow.getShooter() == killer && killer.getLocation().distanceSquared(player.getLocation()) <= 64 * 64) addStat(killer, "TheLongestShot", 1, false, false); } } } } }