@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
    public void onPlayerDeath(final PlayerDeathEvent event) {
        if (event.getEntity() == null || plugin.ignoresWorld(event.getEntity().getWorld().getName())) {
            return;
        }

        if (event.getEntity().getKiller() == null) {
            if (plugin.getConfig().getBoolean("countregulardeaths")) {
                PSMySQL.AkilledB(null, event.getEntity());
            }
            return;
        }

        final Player attacker = event.getEntity().getKiller();
        final Player player = event.getEntity();

        if (plugin.getConfig().getBoolean("checkabuse")) {

            if (lastKill.containsKey(attacker.getName()) && lastKill.get(attacker.getName()).equals(player.getName())) {
                return; // no logging!
            }

            lastKill.put(attacker.getName(), player.getName());
            int abusesec = plugin.getConfig().getInt("abuseseconds");
            if (abusesec > 0) {
                class RemoveLater implements Runnable {

                    @Override
                    public void run() {
                        lastKill.remove(attacker.getName());
                        killTask.remove(attacker.getName());
                    }

                }
                BukkitTask task = Bukkit.getScheduler().runTaskLater(plugin, new RemoveLater(), abusesec * 20L);

                if (killTask.containsKey(attacker.getName())) {
                    killTask.get(attacker.getName()).cancel();
                }

                killTask.put(attacker.getName(), task);
            }
        }
        // here we go, PVP!

        PSMySQL.AkilledB(attacker, player);
    }