/** * Copyright (C) 2012 t7seven7t */ package net.t7seven7t.swornguard.detectors; import java.util.HashMap; import java.util.Map; import net.t7seven7t.swornguard.SwornGuard; import net.t7seven7t.swornguard.events.CheatEvent; import net.t7seven7t.swornguard.types.CheatType; import net.t7seven7t.swornguard.types.FactionKick; import org.bukkit.entity.Player; import com.massivecraft.factions.FPlayers; /** * @author t7seven7t */ public class FactionBetrayalDetector { private final SwornGuard plugin; private final Map<String, FactionKick> possibleBetrayedPlayers; public FactionBetrayalDetector(final SwornGuard plugin) { this.plugin = plugin; this.possibleBetrayedPlayers = new HashMap<String, FactionKick>(); } public void check(Player player, int damage, Player damager) { if (player.getHealth() - damage < 0 && possibleBetrayedPlayers.containsKey(player.getName())) { FactionKick kick = possibleBetrayedPlayers.get(player.getName()); if (kick.getFaction() == FPlayers.i.get(damager).getFaction()) { // Check if player was kicked from faction within 5mins ago if (kick.getTime() > (System.currentTimeMillis() - 1000L * 60 * 5)) { CheatEvent event = new CheatEvent(damager, CheatType.KICK_AND_KILL, "[CHEATER] Possible faction betrayal. " + player.getName() + " was recently kicked from " + kick.getFaction().getTag() + " and now killed by " + damager.getName()); plugin.getCheatHandler().announceCheat(event); possibleBetrayedPlayers.remove(player.getName()); } } } } public void addPossibleBetrayedPlayer(final String player, final FactionKick kick) { possibleBetrayedPlayers.put(player, kick); } }