private void recordDamage(Player player, Player damager, double amt) {
    DamageLog log = logs.get(player.getName());
    if (log == null) {
      log = new DamageLog(player);
      logs.put(player.getName(), log);
    }

    long ticks = plugin.getConfig().getInt("damagelog_ticks");
    log.recordDamage(damager, (int) amt, getNowTick() + ticks);
    scheduleExpireTask(ticks);
  }
  public void run() {
    scheduled = false;

    long nowtick = getNowTick();

    Iterator<DamageLog> i = logs.values().iterator();
    long minremaining = Long.MAX_VALUE;
    while (i.hasNext()) {
      DamageLog log = i.next();
      long remaining = nowtick - log.getExpiresTick();

      if (remaining <= plugin.getConfig().getInt("damagelog_ticks") / 20) {
        i.remove();
        continue;
      }

      minremaining = Math.min(minremaining, remaining);
    }

    if (minremaining < Long.MAX_VALUE) scheduleExpireTask(minremaining);
  }
 private Configuration getConfig() {
   return plugin.getConfig();
 }
 public List<Player> getDamagers(Player player) {
   DamageLog log = logs.get(player.getName());
   if (log != null) return log.getDamagers(plugin.getConfig().getInt("damagelog_min"));
   else return new ArrayList<Player>();
 }