package in.twizmwaz.cardinal.command;
import com.sk89q.minecraft.util.commands.Command;
import com.sk89q.minecraft.util.commands.CommandContext;
import com.sk89q.minecraft.util.commands.CommandException;
import in.twizmwaz.cardinal.GameHandler;
import in.twizmwaz.cardinal.chat.ChatConstant;
import in.twizmwaz.cardinal.chat.LocalizedChatMessage;
import in.twizmwaz.cardinal.rotation.LoadedMap;
import in.twizmwaz.cardinal.util.ChatUtils;
import in.twizmwaz.cardinal.util.Contributor;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
public class MapCommands {
@Command(aliases = {"map"}, desc = "Shows information about the currently playing map.", usage = "")
public static void map(final CommandContext args, CommandSender sender) throws CommandException {
LoadedMap mapInfo;
if (args.argsLength() == 0) mapInfo = GameHandler.getGameHandler().getMatch().getLoadedMap();
else {
String search = "";
for (int a = 0; a < args.argsLength(); a++) {
search = search + args.getString(a) + " ";
}
mapInfo = GameHandler.getGameHandler().getRotation().getMap(search.trim());
if (mapInfo == null) throw new CommandException("No maps matched query");
}
sender.sendMessage(ChatColor.RED + "" + ChatColor.STRIKETHROUGH + "----------" + ChatColor.DARK_AQUA + " " + mapInfo.getName() + " " + ChatColor.GRAY + mapInfo.getVersion() + ChatColor.RED + " " + ChatColor.STRIKETHROUGH + "----------");
sender.sendMessage(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + new LocalizedChatMessage(ChatConstant.UI_MAP_OBJECTIVE).getMessage(ChatUtils.getLocale(sender)) + ": " + ChatColor.RESET + "" + ChatColor.GOLD + mapInfo.getObjective());
if (mapInfo.getAuthors().size() > 1) {
sender.sendMessage(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + new LocalizedChatMessage(ChatConstant.UI_MAP_AUTHORS).getMessage(ChatUtils.getLocale(sender)) + ":");
for (Contributor contributor : mapInfo.getAuthors()) {
if (contributor.getContribution() != null) {
sender.sendMessage("* " + ChatColor.RED + contributor.getName() + ChatColor.RESET + " " + ChatColor.GREEN + "" + ChatColor.ITALIC + "(" + contributor.getContribution() + ")");
} else {
sender.sendMessage("* " + ChatColor.RED + contributor.getName());
}
}
} else {
sender.sendMessage(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + new LocalizedChatMessage(ChatConstant.UI_MAP_AUTHOR).getMessage(ChatUtils.getLocale(sender)) + ": " + ChatColor.RESET + ChatColor.GOLD + mapInfo.getAuthors().get(0).getName());
}
if (mapInfo.getContributors().size() > 0) {
sender.sendMessage(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + new LocalizedChatMessage(ChatConstant.UI_MAP_CONTRIBUTORS).getMessage(ChatUtils.getLocale(sender)) + ":");
for (Contributor contributor : mapInfo.getContributors()) {
if (contributor.getContribution() != null) {
sender.sendMessage("* " + ChatColor.RED + contributor.getName() + ChatColor.RESET + ChatColor.GREEN + "" + ChatColor.ITALIC + " (" + contributor.getContribution() + ")");
} else {
sender.sendMessage("* " + ChatColor.RED + contributor.getName());
}
}
}
if (mapInfo.getRules().size() > 0) {
sender.sendMessage(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + new LocalizedChatMessage(ChatConstant.UI_MAP_RULES).getMessage(ChatUtils.getLocale(sender)) + ":");
for (int i = 1; i <= mapInfo.getRules().size(); i++) {
sender.sendMessage(ChatColor.WHITE + "" + i + ") " + ChatColor.GOLD + mapInfo.getRules().get(i - 1));
}
}
sender.sendMessage(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + new LocalizedChatMessage(ChatConstant.UI_MAP_MAX).getMessage(ChatUtils.getLocale(sender)) + ": " + ChatColor.RESET + "" + ChatColor.GOLD + mapInfo.getMaxPlayers());
}
@Command(aliases = {"next", "nextmap", "nm", "mn"}, desc = "Shows next map.", usage = "")
public static void next(final CommandContext cmd, CommandSender sender) {
LoadedMap next = GameHandler.getGameHandler().getRotation().getNext();
if (next.getAuthors().size() == 1) {
sender.sendMessage(ChatColor.DARK_PURPLE + new LocalizedChatMessage(ChatConstant.GENERIC_MAP_NEXT, ChatColor.GOLD + next.getName() + ChatColor.DARK_PURPLE + " " + new LocalizedChatMessage(ChatConstant.MISC_BY).getMessage(ChatUtils.getLocale(sender)) + " " + ChatColor.RED + next.getAuthors().get(0).getName()).getMessage(ChatUtils.getLocale(sender)));
} else if (next.getAuthors().size() > 1) {
String result = ChatColor.DARK_PURPLE + new LocalizedChatMessage(ChatConstant.GENERIC_MAP_NEXT, ChatColor.GOLD + next.getName() + ChatColor.DARK_PURPLE + " " + new LocalizedChatMessage(ChatConstant.MISC_BY).getMessage(ChatUtils.getLocale(sender)) + " ").getMessage(ChatUtils.getLocale(sender));
for (Contributor author: next.getAuthors()) {
if (next.getAuthors().indexOf(author) < next.getAuthors().size() - 2) {
result = result + ChatColor.RED + author.getName() + ChatColor.DARK_PURPLE + ", ";
} else if (next.getAuthors().indexOf(author) == next.getAuthors().size() - 2) {
result = result + ChatColor.RED + author.getName() + ChatColor.DARK_PURPLE + " " + new LocalizedChatMessage(ChatConstant.MISC_AND).getMessage(ChatUtils.getLocale(sender)) + " ";
} else if (next.getAuthors().indexOf(author) == next.getAuthors().size() - 1) {
result = result + ChatColor.RED + author.getName();
}
}
sender.sendMessage(result);
}
}
}