package org.mcteam.factions.commands;

import org.mcteam.factions.Conf;
import org.mcteam.factions.FPlayer;
import org.mcteam.factions.Faction;

public class FCommandKick extends FBaseCommand {
	
	public FCommandKick() {
		aliases.add("kick");
		
		requiredParameters.add("player name");
		
		helpDescription = "Kick a player from the faction";
	}
	
	public void perform() {
		String playerName = parameters.get(0);
		
		FPlayer you = findFPlayer(playerName, false);
		if (you == null) {
			return;
		}
		
		Faction myFaction = me.getFaction();

		if (you.getFaction() != myFaction) {
			sendMessage(you.getNameAndRelevant(me)+Conf.colorSystem+" is not a member of "+myFaction.getTag(me));
			return;
		}
		
		if (me == you) {
			sendMessage("You cannot kick yourself.");
			sendMessage("You might want to: " + new FCommandLeave().getUseageTemplate(false));
			return;
		}
		
		if (you.getRole().value >= me.getRole().value) { // TODO add more informative messages.
			sendMessage("Your rank is too low to kick this player.");
			return;
		}
		
		myFaction.deinvite(you);
		you.resetFactionData();
		
		myFaction.sendMessage(me.getNameAndRelevant(myFaction)+Conf.colorSystem+" kicked "+you.getNameAndRelevant(myFaction)+Conf.colorSystem+" from the faction! :O");
		you.sendMessage(me.getNameAndRelevant(you)+Conf.colorSystem+" kicked you from "+myFaction.getTag(you)+Conf.colorSystem+"! :O");
	}
	
}
