package me.desht.scrollingmenusign.commands;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import me.desht.dhutils.MessagePager;
import me.desht.dhutils.MiscUtil;
import me.desht.scrollingmenusign.ScrollingMenuSign;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.Configuration;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.plugin.Plugin;
public class GetConfigCommand extends SMSAbstractCommand {
public GetConfigCommand() {
super("sms getcfg", 0, 1);
setPermissionNode("scrollingmenusign.commands.getcfg");
setUsage("/sms getcfg [<key>]");
}
@Override
public boolean execute(Plugin plugin, CommandSender sender, String[] args) {
List<String> lines = getPluginConfiguration(args.length >= 1 ? args[0] : null);
if (lines.size() > 1) {
MessagePager pager = MessagePager.getPager(sender).clear().setParseColours(false);
for (String line : lines) {
pager.add(line);
}
pager.showPage();
} else if (lines.size() == 1) {
MiscUtil.statusMessage(sender, lines.get(0));
}
return true;
}
public List<String> getPluginConfiguration() {
return getPluginConfiguration(null);
}
public List<String> getPluginConfiguration(String section) {
ArrayList<String> res = new ArrayList<String>();
Configuration config = ScrollingMenuSign.getInstance().getConfig();
ConfigurationSection cs = config.getRoot();
Set<String> items;
if (section == null) {
items = config.getDefaults().getKeys(true);
} else {
section = "sms." + section;
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(ChatColor.WHITE + k.replaceAll("^sms\\.", "") + " = '" + ChatColor.YELLOW + cs.get(k) + ChatColor.WHITE + "'");
}
Collections.sort(res);
return res;
}
@Override
public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) {
switch (args.length) {
case 1:
return getConfigCompletions(sender, ScrollingMenuSign.getInstance().getConfig().getConfigurationSection("sms"), args[0]);
default:
return noCompletions(sender);
}
}
}