package com.leontg77.uhc.cmds;
import java.sql.Date;
import java.util.ArrayList;
import org.bukkit.BanEntry;
import org.bukkit.BanList.Type;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import com.leontg77.uhc.Main;
import com.leontg77.uhc.Scoreboards;
import com.leontg77.uhc.utils.DateUtils;
import com.leontg77.uhc.utils.PlayerUtils;
/**
* Tempban command class
*
* @author LeonTG77
*/
public class TempbanCommand implements CommandExecutor {
@Override
public boolean onCommand(final CommandSender sender, Command cmd, String label, final String[] args) {
if (!sender.hasPermission("uhc.tempban")) {
sender.sendMessage(Main.NO_PERM_MSG);
return true;
}
if (args.length < 3) {
sender.sendMessage(Main.PREFIX + "Usage: /tempban <player> <time> <reason>");
return true;
}
final Player target = Bukkit.getServer().getPlayer(args[0]);
final Scoreboards board = Scoreboards.getInstance();
final BanList list = Bukkit.getBanList(Type.NAME);
long time = DateUtils.parseDateDiff(args[1], true);
Date date = new Date(time);
StringBuilder reason = new StringBuilder("");
for (int i = 1; i < args.length; i++) {
reason.append(args[i]).append(" ");
}
final String msg = reason.toString().trim();
if (target == null) {
PlayerUtils.broadcast(Main.PREFIX + "�6" + args[0] + " �7has been temp-banned for �a" + msg);
list.addBan(args[0], msg, date, sender.getName());
board.resetScore(args[0]);
return true;
}
if (target.hasPermission("uhc.staff")) {
sender.sendMessage(ChatColor.RED + "You cannot tempban this player.");
return true;
}
new BukkitRunnable() {
int left = 3;
public void run() {
if (left == 0) {
long time = DateUtils.parseDateDiff(args[1], true);
Date date = new Date(time);
PlayerUtils.broadcast(Main.PREFIX + "�6" + args[0] + " �7has been temp-banned for �a" + msg);
for (Player online : PlayerUtils.getPlayers()) {
online.playSound(online.getLocation(), Sound.EXPLODE, 1, 1);
}
BanEntry ban = list.addBan(target.getName(), msg, date, sender.getName());
target.setWhitelisted(false);
board.resetScore(args[0]);
board.resetScore(target.getName());
PlayerDeathEvent event = new PlayerDeathEvent(target, new ArrayList<ItemStack>(), 0, null);
Bukkit.getServer().getPluginManager().callEvent(event);
target.kickPlayer(
"�8� �7You have been �4temp-banned �7from �6Arctic UHC �8�" +
"\n" +
"\n�cReason �8� �7" + ban.getReason() +
"\n�cBanned by �8� �7" + ban.getSource() +
"\n�cExpires in �8� �7" + DateUtils.formatDateDiff(time) +
"\n" +
"\n�8� �7If you would like to appeal, DM our twitter �a@ArcticUHC �8�"
);
cancel();
} else {
PlayerUtils.broadcast(Main.PREFIX + "Incoming ban in �6" + left + "�7.");
left--;
for (Player online : PlayerUtils.getPlayers()) {
online.playSound(online.getLocation(), Sound.ANVIL_LAND, 1, 1);
}
}
}
}.runTaskTimer(Main.plugin, 0, 20);
return true;
}
}