package net.brennholz.challenges;



import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class HP_Command implements CommandExecutor {

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) {
		if (sender.hasPermission("challenges.hp.modify")) {
			if (args.length >= 2) {
				if (args[0].equalsIgnoreCase("max")) {
					if (Double.parseDouble(args[1]) > 0) {
						for (Player pp : Bukkit.getOnlinePlayers()) {
							pp.setMaxHealth(Double.parseDouble(args[1]));
							pp.setHealth(pp.getMaxHealth());
						}
						sender.sendMessage("�6Du hast die maximalen HP auf �c" + args[1] + " �6gesetzt!");
					}
				} else if (args[0].equalsIgnoreCase("get")) {
					OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[1]));
					if (other.isOnline()) {
						Player p = (Player) other;
						sender.sendMessage("�6" + p.getName() + " �ebesitzt derzeit �6" + p.getHealth() + "HP�e!");
					} else
						sender.sendMessage("�cDieser Spieler ist nicht online!");
				} else if (args.length >= 3) {
					OfflinePlayer other = (Bukkit.getServer().getOfflinePlayer(args[1]));
					if (other.isOnline()) {
						Player p = (Player) other;
						double finaladdhp = p.getHealth() + Double.parseDouble(args[2]);
						double finalremhp = p.getHealth() - Double.parseDouble(args[2]);
						if (args[0].equalsIgnoreCase("add")) {
							if (!(finaladdhp > p.getMaxHealth()) && !(finaladdhp < 0)) {
								p.setHealth(finaladdhp);
								p.sendMessage("�aDu wurdest von �b" + sender.getName() + " �aum �c" + args[2]
										+ "HP �ageheilt!");
								sender.sendMessage(
										"�aDu hast �b" + p.getName() + " �aum �c" + args[2] + "HP �ageheilt!");
							} else
								sender.sendMessage("�cUnm�gliche Operation");
						}
						if (args[0].equalsIgnoreCase("remove")) {
							if (!(finalremhp > p.getMaxHealth()) && !(finalremhp < 0)) {
								p.setHealth(finalremhp);
								p.sendMessage("�4" + sender.getName() + " �chat dir �4" + args[2] + "HP �centfernt!");
								sender.sendMessage("�cDu hast �4" + p.getName() + " " + args[2] + "HP �centfernt!");
							} else
								sender.sendMessage("�cUnm�gliche Operation!");
						}
						if (args[0].equalsIgnoreCase("set")) {
							if (!(Double.parseDouble(args[2]) > p.getMaxHealth())
									&& !(Double.parseDouble(args[2]) < 0)) {
								p.setHealth(Double.parseDouble(args[2]));
								p.sendMessage(
										"�6" + sender.getName() + " �ehat deine HP auf �6" + args[2] + " �egesetzt!");
								sender.sendMessage("�eDu hast die HP von �6" + p.getName() + " �eauf �6" + args[2]
										+ " �egesetzt!");
							} else
								sender.sendMessage("�cUnm�gliche Operation");
						}
					} else
						sender.sendMessage("�cDieser Spieler ist nicht online!");
				} else {
					sender.sendMessage("�c~~~~~ �6HP command �c~~~~~");
					sender.sendMessage("�c/HP Get <Spieler> �4- �6Erhalte die aktuelen HP eines Spielers");
					sender.sendMessage(
							"�c/HP Add <Spieler> <Wert> �4- �6F�ge einem Spieler die angegebene Zahl an Herzen hinzu");
					sender.sendMessage(
							"�c/HP Remove <Spieler> <Wert> �4- �6Entferne einem Spieler die angegebene Zahl an Herzen");
					sender.sendMessage(
							"�c/HP Set <Spieler> <Wert> �4- �6Setze die Herzen eines Spieler auf die angegebene Zahl");
					sender.sendMessage("�c/HP Max <Wert> �4- �6Setze die maximalen HP aller Spieler");
				}
			} else {
				sender.sendMessage("�c~~~~~ �6HP command �c~~~~~");
				sender.sendMessage("�c/HP Get <Spieler> �4- �6Erhalte die aktuelen HP eines Spielers");
				sender.sendMessage(
						"�c/HP Add <Spieler> <Wert> �4- �6F�ge einem Spieler die angegebene Zahl an Herzen hinzu");
				sender.sendMessage(
						"�c/HP Remove <Spieler> <Wert> �4- �6Entferne einem Spieler die angegebene Zahl an Herzen");
				sender.sendMessage(
						"�c/HP Set <Spieler> <Wert> �4- �6Setze die Herzen eines Spieler auf die angegebene Zahl");
				sender.sendMessage("�c/HP Max <Wert> �4- �6Setze die maximalen HP aller Spieler");
			}
		} else
			sender.sendMessage("�cDu hast hierf�r keine Berechtigung");
		return true;
	}
}
