Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / command / PluginCommandYamlParser.java
@vlad20012 vlad20012 on 24 Feb 2017 2 KB initial
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;
	}
}