Interface PluginLoader

All Known Implementing Classes:
JavaPluginLoader

public interface PluginLoader
Represents a plugin loader, which handles direct access to specific types of plugins
  • Method Details

    • loadPlugin

      Loads the plugin contained in the specified file
      Parameters:
      file - File to attempt to load
      Returns:
      Plugin that was contained in the specified file, or null if unsuccessful
      Throws:
      InvalidPluginException - Thrown when the specified file is not a plugin
      UnknownDependencyException - If a required dependency could not be found
    • getPluginDescription

      Loads a PluginDescriptionFile from the specified file
      Parameters:
      file - File to attempt to load from
      Returns:
      A new PluginDescriptionFile loaded from the plugin.yml in the specified file
      Throws:
      InvalidDescriptionException - If the plugin description file could not be created
    • getPluginFileFilters

      @NotNull @NotNull Pattern[] getPluginFileFilters()
      Returns a list of all filename filters expected by this PluginLoader
      Returns:
      The filters
    • createRegisteredListeners

      @NotNull @NotNull Map<Class<? extends Event>,Set<RegisteredListener>> createRegisteredListeners(@NotNull @NotNull Listener listener, @NotNull @NotNull Plugin plugin)
      Creates and returns registered listeners for the event classes used in this listener
      Parameters:
      listener - The object that will handle the eventual call back
      plugin - The plugin to use when creating registered listeners
      Returns:
      The registered listeners.
    • enablePlugin

      void enablePlugin(@NotNull @NotNull Plugin plugin)
      Enables the specified plugin

      Attempting to enable a plugin that is already enabled will have no effect

      Parameters:
      plugin - Plugin to enable
    • disablePlugin

      void disablePlugin(@NotNull @NotNull Plugin plugin)
      Disables the specified plugin

      Attempting to disable a plugin that is not enabled will have no effect

      Parameters:
      plugin - Plugin to disable
    • disablePlugin

      @Deprecated(forRemoval=true) default void disablePlugin(@NotNull @NotNull Plugin plugin, boolean closeClassloader)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Classloader is always closed by upstream now.
      This method is no longer useful as upstream has made it so plugin classloaders are always closed on disable. Use disablePlugin(Plugin) instead.
      Parameters:
      plugin - Plugin to disable
      closeClassloader - unused