/**
* Copyright (C) 2012 t7seven7t
*/
package net.t7seven7t.swornguard.commands.jail;
import net.dmulloy2.exception.BadTimeException;
import net.dmulloy2.util.TimeUtil;
import net.t7seven7t.swornguard.SwornGuard;
import net.t7seven7t.swornguard.commands.SwornGuardCommand;
import net.t7seven7t.swornguard.types.Permission;
import net.t7seven7t.swornguard.types.PlayerData;
import org.bukkit.OfflinePlayer;
/**
* @author t7seven7t
*/
public class CmdJail extends SwornGuardCommand {
public CmdJail(SwornGuard plugin) {
super(plugin);
this.name = "jail";
this.description = plugin.getMessage("desc_jail");
this.permission = Permission.CMD_JAIL;
this.addRequiredArg("player");
this.addRequiredArg("time");
this.addRequiredArg("reason");
}
@Override
public void perform() {
plugin.getLogHandler().debug("Checking if jail is setup..");
if (! plugin.getJailHandler().getJail().isSetup()) {
err(plugin.getMessage("jail_error_not_setup"));
return;
}
plugin.getLogHandler().debug("Getting player for arg {0}..", args[0]);
OfflinePlayer target = getTarget(0);
if (target == null)
return;
plugin.getLogHandler().debug("Getting time for arg {0}...", args[1]);
long time;
try {
time = TimeUtil.parseTime(args[1]);
} catch (BadTimeException e) {
err(plugin.getMessage("jail_error_time_format"), args[1]);
return;
}
if (time < 1000) {
err(plugin.getMessage("jail_error_time_out_of_range"), args[1]);
return;
}
plugin.getLogHandler().debug("Attempting to get jail reason.");
StringBuilder reason = new StringBuilder();
for (int i = 2; i < args.length; i++) {
reason.append(args[i] + " ");
}
reason.deleteCharAt(reason.lastIndexOf(" "));
plugin.getLogHandler().debug("Checking if player is already jailed.");
if (plugin.getPlayerDataCache().getData(target).isJailed()) {
err("{0} is already jailed.", target.getName());
return;
}
plugin.getLogHandler().debug("Updating jail count for player.");
if (isPlayer()) {
PlayerData data = plugin.getPlayerDataCache().getData(player);
data.setPlayersJailed(data.getPlayersJailed() + 1);
}
plugin.getLogHandler().debug("Giving control to jail handler.");
plugin.getJailHandler().jail(target, time, reason.toString(), sender.getName());
plugin.getLogHandler().log(plugin.getMessage("jail_log_jail"), target.getName(), TimeUtil.formatTime(time), reason.toString(), sender.getName());
sendMessage(plugin.getMessage("jail_confirm_jail"), target.getName(), time, reason.toString(), sender.getName());
plugin.getLogHandler().debug("Command done.");
}
}