/** * Copyright (C) 2012 t7seven7t */ package net.t7seven7t.swornguard.detectors; import net.dmulloy2.util.FormatUtil; import net.dmulloy2.util.TimeUtil; import net.dmulloy2.util.Util; import net.t7seven7t.swornguard.SwornGuard; import net.t7seven7t.swornguard.types.Permission; import net.t7seven7t.swornguard.types.PlayerData; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; /** * @author t7seven7t */ public class CommandDetector { private final SwornGuard plugin; public CommandDetector(final SwornGuard plugin) { this.plugin = plugin; } public void checkCommand(CommandSender sender, String command, String[] args) { command = command.toLowerCase(); if (args.length > 0 && (command.equals("ban") || command.equals("eban") || command.equals("tempban") || command.equals("unban") || command.equals("unban") || command.equals("kick") || command.equals("ekick") || command.equals("pardon") || command.equals("epardon"))) { OfflinePlayer target = Util.matchOfflinePlayer(args[0]); if (target == null) return; PlayerData data = plugin.getPlayerDataCache().getData(target); if (data == null) return; PlayerData senderData = null; if (sender instanceof Player) senderData = plugin.getPlayerDataCache().getData((Player) sender); String action; StringBuilder reason = null; if (args.length > 1) { reason = new StringBuilder(); for (int i = 1; i < args.length; i++) reason.append(args[i] + " "); reason.deleteCharAt(reason.lastIndexOf(" ")); } if ((command.equals("ban") || command.equals("eban") || command.equals("tempban") || command.equals("etempban")) && plugin.getPermissionHandler().hasPermission(sender, Permission.CMD_BAN)) { action = plugin.getMessage("profiler_ban"); data.setBans(data.getBans() + 1); data.setLastBan(System.currentTimeMillis()); data.setLastBanner(sender.getName()); data.setLastBanReason(reason == null ? "" : reason.toString()); if (senderData != null) senderData.setPlayersBanned(senderData.getPlayersBanned() + 1); } else if ((command.equals("unban") || command.equals("eunban") || command.equals("pardon") || command.equals("epardon")) && plugin.getPermissionHandler().hasPermission(sender, Permission.CMD_UNBAN)) { action = plugin.getMessage("profiler_unban"); data.setLastUnban(System.currentTimeMillis()); data.setLastUnbanner(sender.getName()); data.setLastUnbanReason(reason == null ? "" : reason.toString()); } else if ((command.equals("kick") || command.equals("ekick")) && plugin.getPermissionHandler().hasPermission(sender, Permission.CMD_KICK)) { action = plugin.getMessage("profiler_kick"); data.setKicks(data.getKicks() + 1); data.setLastKick(System.currentTimeMillis()); data.setLastKicker(sender.getName()); data.setLastKickReason(reason == null ? "" : reason.toString()); if (senderData != null) senderData.setPlayersKicked(senderData.getPlayersKicked() + 1); } else { return; } data.getProfilerList().add(FormatUtil.format(plugin.getMessage("profiler_event"), TimeUtil.getLongDateCurr(), FormatUtil.format(plugin.getMessage("profiler_action"), target.getName(), action, sender.getName(), reason == null ? "" : " for " + reason.toString()))); } } }