package com.earth2me.essentials.commands;

import com.earth2me.essentials.User;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;


public class Commandgetpos extends EssentialsCommand
{
	public Commandgetpos()
	{
		super("getpos");
	}
	
	@Override
	public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception
	{
		if (args.length > 0 && user.isAuthorized("essentials.getpos.others"))
		{
			final User otherUser = getPlayer(server, args, 0);
			outputPosition(user, otherUser.getLocation(), user.getLocation());
		}
		else
		{
			outputPosition(user, user.getLocation(), null);
		}
	}
	
	@Override
	protected void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception
	{
		if (args.length < 1)
		{
			throw new NotEnoughArgumentsException();
		}
		final User user = getPlayer(server, args, 0);
		outputPosition(sender, user.getLocation(), null);
	}
	
	//TODO: Translate
	private void outputPosition(final CommandSender sender, final Location coords, final Location distance)
	{
		sender.sendMessage("§7World: " + coords.getWorld().getName());
		sender.sendMessage("§7X: " + coords.getBlockX() + " (+East <-> -West)");
		sender.sendMessage("§7Y: " + coords.getBlockY() + " (+Up <-> -Down)");
		sender.sendMessage("§7Z: " + coords.getBlockZ() + " (+South <-> -North)");
		sender.sendMessage("§7Yaw: " + (coords.getYaw() + 180 + 360) % 360 + " (Rotation)");
		sender.sendMessage("§7Pitch: " + coords.getPitch() + " (Head angle)");
		if (distance != null && coords.getWorld().equals(distance.getWorld()))
		{
			sender.sendMessage("§7Distance: " + coords.distance(distance));
		}
	}
}
