/**
* Copyright (C) 2012 t7seven7t
*/
package net.t7seven7t.swornguard.detectors;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.dmulloy2.util.MaterialUtil;
import net.t7seven7t.swornguard.SwornGuard;
import org.bukkit.Material;
import org.bukkit.entity.Player;
/**
* @author t7seven7t
*/
public class AutoClickerDetector {
private final Map<String, Long> recentClicks;
private final List<Material> autoclickerAllowedWeapons;
private final long autoclickerTimeBetweenAttacks;
public AutoClickerDetector(final SwornGuard plugin) {
this.recentClicks = new HashMap<String, Long>();
this.autoclickerTimeBetweenAttacks = plugin.getConfig().getLong("autoclickerTimeBetweenAttacksInMillis");
this.autoclickerAllowedWeapons = new ArrayList<Material>();
for (String s : plugin.getConfig().getStringList("autoclickerAllowedWeapons"))
{
autoclickerAllowedWeapons.add(MaterialUtil.getMaterial(s));
}
}
public boolean isClickingTooFast(final Player player) {
final long now = System.currentTimeMillis();
if (player.getItemInHand() == null
|| !autoclickerAllowedWeapons.contains(player.getItemInHand().getType())) {
if (recentClicks.containsKey(player.getName())
&& (now - recentClicks.get(player.getName()) < autoclickerTimeBetweenAttacks)) {
return true;
}
}
recentClicks.remove(player.getName());
recentClicks.put(player.getName(), Long.valueOf(now));
return false;
}
}