package org.bukkit.plugin; import java.io.File; import java.util.Set; import org.bukkit.event.Event; import org.bukkit.event.Event.Priority; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.permissions.Permissible; import org.bukkit.permissions.Permission; /** * Handles all plugin management from the Server */ public interface PluginManager { /** * Registers the specified plugin loader * * @param loader Class name of the PluginLoader to register * @throws IllegalArgumentException Thrown when the given Class is not a valid PluginLoader */ public void registerInterface(Class extends PluginLoader> loader) throws IllegalArgumentException; /** * Checks if the given plugin is loaded and returns it when applicable *
* Please note that the name of the plugin is case-sensitive * * @param name Name of the plugin to check * @return Plugin if it exists, otherwise null */ public Plugin getPlugin(String name); /** * Gets a list of all currently loaded plugins * * @return Array of Plugins */ public Plugin[] getPlugins(); /** * Checks if the given plugin is enabled or not * * Please note that the name of the plugin is case-sensitive. * * @param name Name of the plugin to check * @return true if the plugin is enabled, otherwise false */ public boolean isPluginEnabled(String name); /** * Checks if the given plugin is enabled or not * * @param plugin Plugin to check * @return true if the plugin is enabled, otherwise false */ public boolean isPluginEnabled(Plugin plugin); /** * Loads the plugin in the specified file * * File must be valid according to the current enabled Plugin interfaces * * @param file File containing the plugin to load * @return The Plugin loaded, or null if it was invalid * @throws InvalidPluginException Thrown when the specified file is not a valid plugin * @throws InvalidDescriptionException Thrown when the specified file contains an invalid description * @throws UnknownDependencyException If a required dependency could not be resolved */ public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException; /** * Loads the plugins contained within the specified directory * * @param directory Directory to check for plugins * @return A list of all plugins loaded */ public Plugin[] loadPlugins(File directory); /** * Disables all the loaded plugins */ public void disablePlugins(); /** * Disables and removes all plugins */ public void clearPlugins(); /** * Calls an event with the given details * * @param event Event details * @return Called event */ public void callEvent(Event event); /** * Registers the given event to the specified listener * * @param type EventType to register * @param listener Listener to register * @param priority Priority of this event * @param plugin Plugin to register */ @Deprecated public void registerEvent(Event.Type type, Listener listener, Priority priority, Plugin plugin); /** * Registers the given event to the specified executor * * @param type EventType to register * @param listener Listener to register * @param executor EventExecutor to register * @param priority Priority of this event * @param plugin Plugin to register */ @Deprecated public void registerEvent(Event.Type type, Listener listener, EventExecutor executor, Priority priority, Plugin plugin); /** * Registers all the events in the given listener class * * @param listener Listener to register * @param plugin Plugin to register */ public void registerEvents(Listener listener, Plugin plugin); /** * Registers the specified executor to the given event class * * @param event Event type to register * @param listener Listener to register * @param priority Priority to register this event at * @param executor EventExecutor to register * @param plugin Plugin to register */ public void registerEvent(Class extends Event> event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin); /** * Enables the specified plugin * * Attempting to enable a plugin that is already enabled will have no effect * * @param plugin Plugin to enable */ public void enablePlugin(Plugin plugin); /** * Disables the specified plugin * * Attempting to disable a plugin that is not enabled will have no effect * * @param plugin Plugin to disable */ public void disablePlugin(Plugin plugin); /** * Gets a {@link Permission} from its fully qualified name * * @param name Name of the permission * @return Permission, or null if none */ public Permission getPermission(String name); /** * Adds a {@link Permission} to this plugin manager. * * If a permission is already defined with the given name of the new permission, * an exception will be thrown. * * @param perm Permission to add * @throws IllegalArgumentException Thrown when a permission with the same name already exists */ public void addPermission(Permission perm); /** * Removes a {@link Permission} registration from this plugin manager. * * If the specified permission does not exist in this plugin manager, nothing will happen. * * Removing a permission registration will not remove the permission from any {@link Permissible}s that have it. * * @param perm Permission to remove */ public void removePermission(Permission perm); /** * Removes a {@link Permission} registration from this plugin manager. * * If the specified permission does not exist in this plugin manager, nothing will happen. * * Removing a permission registration will not remove the permission from any {@link Permissible}s that have it. * * @param name Permission to remove */ public void removePermission(String name); /** * Gets the default permissions for the given op status * * @param op Which set of default permissions to get * @return The default permissions */ public Set