001 package org.bukkit.command;
002
003 import java.util.ArrayList;
004 import java.util.List;
005 import java.util.Map;
006 import java.util.Map.Entry;
007
008 import org.bukkit.Bukkit;
009 import org.bukkit.plugin.Plugin;
010
011 public class PluginCommandYamlParser {
012
013 public static List<Command> parse(Plugin plugin) {
014 List<Command> pluginCmds = new ArrayList<Command>();
015
016 Map<String, Map<String, Object>> map = plugin.getDescription().getCommands();
017
018 if (map == null) {
019 return pluginCmds;
020 }
021
022 for (Entry<String, Map<String, Object>> entry : map.entrySet()) {
023 if (entry.getKey().contains(":")) {
024 Bukkit.getServer().getLogger().severe("Could not load command " + entry.getKey() + " for plugin " + plugin.getName() + ": Illegal Characters");
025 continue;
026 }
027 Command newCmd = new PluginCommand(entry.getKey(), plugin);
028 Object description = entry.getValue().get("description");
029 Object usage = entry.getValue().get("usage");
030 Object aliases = entry.getValue().get("aliases");
031 Object permission = entry.getValue().get("permission");
032 Object permissionMessage = entry.getValue().get("permission-message");
033
034 if (description != null) {
035 newCmd.setDescription(description.toString());
036 }
037
038 if (usage != null) {
039 newCmd.setUsage(usage.toString());
040 }
041
042 if (aliases != null) {
043 List<String> aliasList = new ArrayList<String>();
044
045 if (aliases instanceof List) {
046 for (Object o : (List<?>) aliases) {
047 if (o.toString().contains(":")) {
048 Bukkit.getServer().getLogger().severe("Could not load alias " + o.toString() + " for plugin " + plugin.getName() + ": Illegal Characters");
049 continue;
050 }
051 aliasList.add(o.toString());
052 }
053 } else {
054 if (aliases.toString().contains(":")) {
055 Bukkit.getServer().getLogger().severe("Could not load alias " + aliases.toString() + " for plugin " + plugin.getName() + ": Illegal Characters");
056 } else {
057 aliasList.add(aliases.toString());
058 }
059 }
060
061 newCmd.setAliases(aliasList);
062 }
063
064 if (permission != null) {
065 newCmd.setPermission(permission.toString());
066 }
067
068 if (permissionMessage != null) {
069 newCmd.setPermissionMessage(permissionMessage.toString());
070 }
071
072 pluginCmds.add(newCmd);
073 }
074 return pluginCmds;
075 }
076 }