package net.mc_pandacraft.java.plugin.pandacraftutils.commands;

import net.mc_pandacraft.java.plugin.pandacraftutils.modules.cheat_protect.TamedEntityProtectManager;
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayer;
import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.entity.Tameable;

public class CommandAnimal extends AbstractCommandExecutor {
	
	public CommandAnimal() {
		super("animal");
	}

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label,
			String[] args) {
		
		if (!(sender instanceof Player)) {
			sender.sendMessage(ChatColor.RED+"seul un joueur en ligne peut effectuer cette commande");
			return true;
		}
		
		Player p = (Player) sender;
		OnlinePlayer op = OnlinePlayerManager.get(p);
		
		if (!op.isAnimalSelectionEnabled()) {
			op.enableAnimalSelection();
			p.sendMessage(ChatColor.GREEN+"Faites un clic droite pour sélectionner un animal apprivoisé (cheval, loup ou chat)");
			return true;
		}
		// la sélection d'un animal est déjà activée
		
		
		// si le joueur veut désactiver la sélection d'un animal
		if (args.length >= 1 && args[0].equalsIgnoreCase("annuler")) {
			p.sendMessage(ChatColor.GREEN+"La sélection d'un animal est désactivée");
			op.resetAnimalSelection();
			return true;
		}
		
		
		// si je joueur n'a pas encore sélectionné d'animal
		if (op.getSelectedAnimal() == null) {
			p.sendMessage(ChatColor.RED+"Faites d'abord un clic droite sur un animal apprivoisé (cheval, loup ou chat)");
			return true;
		}

		TamedEntityProtectManager tepm = plugin.tamedEntityProtectManager;
		Tameable animal = op.getSelectedAnimal();
		String animalName = tepm.get_thisAnimal_Name(animal);
		
		if (!op.hasPermission("pandacraft.animal.admin")) {
			if (animal.getOwner() == null) {
				p.sendMessage(ChatColor.RED+animalName+ChatColor.RED+" n'appartient à personne");
				return true;
			}
			if (!animal.getOwner().equals(p)) {
				p.sendMessage(ChatColor.RED+animalName+ChatColor.RED+" n'est pas à vous");
				return true;
			}
		}
		
		
		
		
		if (args.length >= 2 && args[0].equalsIgnoreCase("donner")) {
			
			Player newOwner = plugin.getServer().getPlayer(args[1]);
			
			if (newOwner == null) {
				p.sendMessage(ChatColor.RED+"Le joueur indiqué n'est pas en ligne");
				return true;
			}
			
			animal.setOwner(newOwner);
			p.sendMessage(ChatColor.GREEN+"Vous venez de donner "+animalName+ChatColor.GREEN+" à "+newOwner.getDisplayName());
			op.resetAnimalSelection();
			
			return true;
		}
		
		
		
		
		
		return false;
	}

}
