package me.desht.chesscraft.commands; import me.desht.chesscraft.Messages; import me.desht.chesscraft.exceptions.ChessException; import me.desht.chesscraft.results.Results; import me.desht.chesscraft.results.ScoreRecord; import me.desht.dhutils.MessagePager; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; import java.util.Arrays; import java.util.List; public class ListTopCommand extends ChessAbstractCommand { public ListTopCommand() { super("chess list top", 0, 3); setPermissionNode("chesscraft.commands.list.top"); setUsage("/chess list top [<n>] [ladder|league] [-ai] [-r]"); setOptions("ai", "r"); } @Override public boolean execute(Plugin plugin, CommandSender sender, String[] args) { final Results results = Results.getResultsHandler(); if (results == null) { throw new ChessException("Results are not available."); } if (getBooleanOption("r")) { results.rebuildViews(); } int n = 5; if (args.length > 0) { try { n = Integer.parseInt(args[0]); } catch (NumberFormatException e) { throw new ChessException(Messages.getString("ChessCommandExecutor.invalidNumeric", args[0])); } } String viewName = args.length > 1 ? args[1] : "ladder"; boolean excludeAI = getBooleanOption("ai"); List<ScoreRecord> scores = results.getView(viewName).getScores(n, excludeAI); MessagePager pager = MessagePager.getPager(sender).clear().setParseColours(true); int row = 1; for (ScoreRecord sr : scores) { pager.add(MessagePager.BULLET + Messages.getString("ChessCommandExecutor.scoreRecord", row, sr.getPlayer(), sr.getScore())); row++; } pager.showPage(); return true; } @Override public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) { if (args.length == 2) { return filterPrefix(sender, Arrays.asList("ladder", "league"), args[1]); } else { showUsage(sender); return noCompletions(sender); } } }