package me.desht.chesscraft.commands; import me.desht.chesscraft.ChessCraft; import me.desht.chesscraft.Messages; import me.desht.chesscraft.exceptions.ChessException; import me.desht.dhutils.MessagePager; import me.desht.dhutils.MiscUtil; import org.bukkit.command.CommandSender; import org.bukkit.configuration.Configuration; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.plugin.Plugin; import java.util.*; public class GetcfgCommand extends ChessAbstractCommand { public GetcfgCommand() { super("chess getcfg", 0, 1); setPermissionNode("chesscraft.commands.getcfg"); setUsage("/chess getcfg"); } @Override public boolean execute(Plugin plugin, CommandSender player, String[] args) throws ChessException { List<String> lines = getPluginConfiguration(args.length >= 1 ? args[0] : null); if (lines.size() > 1) { MessagePager pager = MessagePager.getPager(player).clear().setParseColours(true); for (String line : lines) { pager.add(line); } pager.showPage(); } else if (lines.size() == 1) { MiscUtil.statusMessage(player, lines.get(0)); } else { MiscUtil.errorMessage(player, Messages.getString("ChessConfig.noSuchKey", args[0])); //$NON-NLS-1$ } return true; } public List<String> getPluginConfiguration() { return getPluginConfiguration(null); } public List<String> getPluginConfiguration(String section) { ArrayList<String> res = new ArrayList<String>(); Configuration config = ChessCraft.getInstance().getConfig(); ConfigurationSection cs = config.getRoot(); Set<String> items; if (section == null) { items = config.getDefaults().getKeys(true); } else { if (config.getDefaults().isConfigurationSection(section)) { cs = config.getConfigurationSection(section); items = config.getDefaults().getConfigurationSection(section).getKeys(true); } else { items = new HashSet<String>(); if (config.getDefaults().contains(section)) items.add(section); } } for (String k : items) { if (cs.isConfigurationSection(k)) continue; res.add("&f" + k + "&- = '&e" + cs.get(k) + "&-'"); } Collections.sort(res); return res; } @Override public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) { switch (args.length) { case 1: return getConfigCompletions(sender, plugin.getConfig(), args[0]); default: return noCompletions(sender); } } }