package me.desht.chesscraft.commands; import chesspresso.Chess; import me.desht.chesscraft.Messages; import me.desht.chesscraft.chess.ChessGame; import me.desht.chesscraft.chess.ChessGameManager; import me.desht.chesscraft.util.ChessUtils; import me.desht.dhutils.MessagePager; import me.desht.dhutils.MiscUtil; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import java.util.List; public class ListGameCommand extends ChessAbstractCommand { private static final String TO_MOVE = ChatColor.GOLD + "\u261e " + ChatColor.RESET; public ListGameCommand() { super("chess list game", 0, 1); setPermissionNode("chesscraft.commands.list.game"); setUsage("/chess list game"); } @Override public boolean execute(Plugin plugin, CommandSender sender, String[] args) { if (ChessGameManager.getManager().listGames().isEmpty()) { MiscUtil.statusMessage(sender, Messages.getString("ChessCommandExecutor.noCurrentGames")); return true; } MessagePager pager = MessagePager.getPager(sender).clear().setParseColours(true); if (args.length >= 1) { List<String> l = ChessGameManager.getManager().getGame(args[0]).getGameDetail(); pager.add(l); } else { for (ChessGame game : ChessGameManager.getManager().listGamesSorted()) { String name = game.getName(); if (sender instanceof Player && game == ChessGameManager.getManager().getCurrentGame((Player) sender)) { name = ChatColor.BOLD + ChatColor.ITALIC.toString() + name + ChatColor.RESET; } String curMoveW = game.getPosition().getToPlay() == Chess.WHITE ? TO_MOVE : ""; String curMoveB = game.getPosition().getToPlay() == Chess.BLACK ? TO_MOVE : ""; String white = game.hasPlayer(Chess.WHITE) ? game.getPlayer(Chess.WHITE).getDisplayName() : "?"; String black = game.hasPlayer(Chess.BLACK) ? game.getPlayer(Chess.BLACK).getDisplayName() : "?"; String line = String.format(MessagePager.BULLET + "%s: &f%s%s (%s) v %s%s (%s)", name, curMoveW, white, ChessUtils.getDisplayColour(Chess.WHITE), curMoveB, black, ChessUtils.getDisplayColour(Chess.BLACK)); if (game.getInvitedId() != null) { line += Messages.getString("ChessCommandExecutor.invited", game.getInvitedId()); } pager.add(line); } } pager.showPage(); return true; } @Override public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) { if (args.length == 1) { return getGameCompletions(plugin, sender, args[0]); } else { showUsage(sender); return noCompletions(sender); } } }