private void player(MessageReceiver caller, String[] cmd) {
if (cmd.length < 2) {
Canary.help().getHelp(caller, "ban");
return;
}
Ban ban = new Ban();
Player p = Canary.getServer().matchPlayer(cmd[1]);
String reason = "Permanently Banned";
long timestamp = -1L;
if (cmd.length >= 3) {
try {
timestamp = ToolBox.parseTime(Long.parseLong(cmd[cmd.length - 2]), cmd[cmd.length - 1]);
reason = StringUtils.joinString(cmd, " ", 2, cmd.length - 2);
}
catch (NumberFormatException e) {
reason = StringUtils.joinString(cmd, " ", 2);
timestamp = -1L;
}
}
ban.setReason(reason);
ban.setTimestamp(timestamp);
ban.setBanningPlayer(caller.getName());
if (p != null) {
ban.setSubject(p.getName());
Canary.bans().issueBan(ban);
Canary.hooks().callHook(new BanHook(p, p.getIP(), (caller instanceof Player) ? (Player)caller : null, reason, timestamp));
caller.notice(Translator.translateAndFormat("ban banned", p.getName()));
p.kick(reason);
}
else {
ban.setSubject(cmd[1]);
Canary.bans().issueBan(ban);
Canary.hooks().callHook(new BanHook(null, "xxx.xxx.xxx.xxx", (caller instanceof Player) ? (Player)caller : null, reason, timestamp));
caller.notice(Translator.translateAndFormat("ban banned", cmd[1]));
}
}