package net.brennholz.commands;



import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import net.brennholz.challenges.Challenges;

public class Timer_Command implements CommandExecutor {

	private Challenges chl = Challenges.getplugin();
	public boolean timer;
	private int zeit = chl.getConfig().getInt("timer.time");
	private int sek;
	private int min;
	private int hrs;
	private String ssek;
	private String smin;

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) {
		timer = chl.getConfig().getBoolean("timer.enabled");
		if (sender.hasPermission("challenges.timer")) {
			if (args.length >= 1) {
				if (args[0].equalsIgnoreCase("resume")) {
					if (timer == false) {
						timer = true;
						chl.getServer().broadcastMessage("§aDer Timer wird fortgesetzt!");
						chl.getConfig().set("timer.enabled", timer);
						chl.saveConfig();
					} else
						sender.sendMessage("§cDer Timer läuft bereits!");
				} else if (args[0].equalsIgnoreCase("pause")) {
					if (timer == true) {
						timer = false;
						chl.getServer().broadcastMessage("§6Der Timer wurde angehalten");
						chl.getConfig().set("timer.enabled", timer);
						chl.saveConfig();
					} else
						sender.sendMessage("§cDer Timer ist bereits pausiert!");
				} else if (args[0].equalsIgnoreCase("reset")) {
					timer = false;
					chl.getConfig().set("timer.enabled", timer);
					chl.saveConfig();
					zeit = 0;
					sek = 0;
					min = 0;
					hrs = 0;
					RefreshConfig();
					chl.getServer().broadcastMessage("§cDer Timer wurde zurückgesetzt!");
				} else if (args.length >= 2) {
					if (args[0].equalsIgnoreCase("set")) {
						timer = false;
						chl.getConfig().set("timer.enabled", timer);
						chl.saveConfig();
						zeit = Integer.parseInt(args[1]);
						RefreshConfig();
						chl.getServer().broadcastMessage(
								"§bDer Timer wurde auf §a" + hrs + ":" + smin + ":" + ssek + " §bgesetzt!");
					}
				} else
					sender.sendMessage("§cBenutze: /timer resume/pause/reset/set [Zeit in Sekunden]");
			} else {
				sender.sendMessage("§c~~~~~ §6Timer command §c~~~~~");
				sender.sendMessage("§c/timer resume §4- §6Setze den Timer fort");
				sender.sendMessage("§c/timer pause §4- §6Pausiere den Timer");
				sender.sendMessage("§c/timer reset §4- §6Setze den Timer zurück");
				sender.sendMessage("§c/timer set [Zeit in Sekunden] §4- §6Setze den Timer auf eine bestimmte Zeit");
			}
		} else
			sender.sendMessage("§cDu hast hierfür keine Berechtigung");
		return true;

	}

	@SuppressWarnings("deprecation")
	public void Run_Timer() {
		Bukkit.getScheduler().scheduleAsyncRepeatingTask(chl, new Runnable() {
			@Override
			public void run() {
				boolean ttimer = chl.getConfig().getBoolean("timer.enabled");
				int ttime = chl.getConfig().getInt("timer.time");
				int thrs = chl.getConfig().getInt("timer.hrs");
				String tsek = chl.getConfig().getString("timer.sek");
				String tmin = chl.getConfig().getString("timer.min");
				if (ttimer) {
					ttime = ttime + 1;
					zeit = ttime;
					RefreshConfig();
					for (Player p : chl.getServer().getOnlinePlayers()) {
						p.sendActionBar("§7In Challenge§8: §2§l" + thrs + "§8§l:§2§l" + tmin + "§8§l:§2§l" + tsek);
					}
				} else {
					for (Player p : chl.getServer().getOnlinePlayers()) {
						p.sendActionBar("§cTimer pausiert...");
					}
				}
			}
		}, 1 * 20L, 1 * 20L);
	}

	public void RefreshConfig() {
		min = zeit / 60;
		hrs = min / 60;
		min = min % 60;
		sek = zeit % 60;
		if (sek >= 10) {
			ssek = Integer.toString(sek);
		} else
			ssek = '0' + Integer.toString(sek);
		if (min >= 10) {
			smin = Integer.toString(min);
		} else
			smin = '0' + Integer.toString(min);
		chl.getConfig().set("timer.time", zeit);
		chl.getConfig().set("timer.sek", ssek);
		chl.getConfig().set("timer.min", smin);
		chl.getConfig().set("timer.hrs", hrs);
		chl.saveConfig();
	}

}
