package org.bukkit.command;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class PluginCommandYamlParser
{
public static List<Command> parse(Plugin plugin)
{
List<Command> pluginCmds = new ArrayList<Command>();
Map<String, Map<String, Object>> map = plugin.getDescription().getCommands();
if(map == null)
{
return pluginCmds;
}
for(Entry<String, Map<String, Object>> entry : map.entrySet())
{
if(entry.getKey().contains(":"))
{
Bukkit.getServer().getLogger().severe("Could not load command " + entry.getKey() + " for plugin " + plugin.getName() + ": Illegal Characters");
continue;
}
Command newCmd = new PluginCommand(entry.getKey(), plugin);
Object description = entry.getValue().get("description");
Object usage = entry.getValue().get("usage");
Object aliases = entry.getValue().get("aliases");
Object permission = entry.getValue().get("permission");
Object permissionMessage = entry.getValue().get("permission-message");
if(description != null)
{
newCmd.setDescription(description.toString());
}
if(usage != null)
{
newCmd.setUsage(usage.toString());
}
if(aliases != null)
{
List<String> aliasList = new ArrayList<String>();
if(aliases instanceof List)
{
for(Object o : (List<?>) aliases)
{
if(o.toString().contains(":"))
{
Bukkit.getServer().getLogger().severe("Could not load alias " + o.toString() + " for plugin " + plugin.getName() + ": Illegal Characters");
continue;
}
aliasList.add(o.toString());
}
}
else
{
if(aliases.toString().contains(":"))
{
Bukkit.getServer().getLogger().severe("Could not load alias " + aliases.toString() + " for plugin " + plugin.getName() + ": Illegal Characters");
}
else
{
aliasList.add(aliases.toString());
}
}
newCmd.setAliases(aliasList);
}
if(permission != null)
{
newCmd.setPermission(permission.toString());
}
if(permissionMessage != null)
{
newCmd.setPermissionMessage(permissionMessage.toString());
}
pluginCmds.add(newCmd);
}
return pluginCmds;
}
}