Interface PluginManager

  • All Known Implementing Classes:
    SimplePluginManager

    public interface PluginManager
    Handles all plugin management from the Server
    • Method Detail

      • getPlugin

        @Nullable
        Plugin getPlugin​(@NotNull
                         String name)
        Checks if the given plugin is loaded and returns it when applicable

        Please note that the name of the plugin is case-sensitive

        Parameters:
        name - Name of the plugin to check
        Returns:
        Plugin if it exists, otherwise null
      • getPlugins

        @NotNull
        Plugin[] getPlugins()
        Gets a list of all currently loaded plugins
        Returns:
        Array of Plugins
      • isPluginEnabled

        boolean isPluginEnabled​(@NotNull
                                String name)
        Checks if the given plugin is enabled or not

        Please note that the name of the plugin is case-sensitive.

        Parameters:
        name - Name of the plugin to check
        Returns:
        true if the plugin is enabled, otherwise false
      • isPluginEnabled

        @Contract("null -> false")
        boolean isPluginEnabled​(@Nullable
                                Plugin plugin)
        Checks if the given plugin is enabled or not
        Parameters:
        plugin - Plugin to check
        Returns:
        true if the plugin is enabled, otherwise false
      • loadPlugins

        @NotNull
        Plugin[] loadPlugins​(@NotNull
                             File directory)
        Loads the plugins contained within the specified directory
        Parameters:
        directory - Directory to check for plugins
        Returns:
        A list of all plugins loaded
      • disablePlugins

        void disablePlugins()
        Disables all the loaded plugins
      • clearPlugins

        void clearPlugins()
        Disables and removes all plugins
      • callEvent

        void callEvent​(@NotNull
                       Event event)
                throws IllegalStateException
        Calls an event with the given details
        Parameters:
        event - Event details
        Throws:
        IllegalStateException - Thrown when an asynchronous event is fired from synchronous code.

        Note: This is best-effort basis, and should not be used to test synchronized state. This is an indicator for flawed flow logic.

      • registerEvents

        void registerEvents​(@NotNull
                            Listener listener,
                            @NotNull
                            Plugin plugin)
        Registers all the events in the given listener class
        Parameters:
        listener - Listener to register
        plugin - Plugin to register
      • registerEvent

        void registerEvent​(@NotNull
                           Class<? extends Event> event,
                           @NotNull
                           Listener listener,
                           @NotNull
                           EventPriority priority,
                           @NotNull
                           EventExecutor executor,
                           @NotNull
                           Plugin plugin)
        Registers the specified executor to the given event class
        Parameters:
        event - Event type to register
        listener - Listener to register
        priority - Priority to register this event at
        executor - EventExecutor to register
        plugin - Plugin to register
      • registerEvent

        void registerEvent​(@NotNull
                           Class<? extends Event> event,
                           @NotNull
                           Listener listener,
                           @NotNull
                           EventPriority priority,
                           @NotNull
                           EventExecutor executor,
                           @NotNull
                           Plugin plugin,
                           boolean ignoreCancelled)
        Registers the specified executor to the given event class
        Parameters:
        event - Event type to register
        listener - Listener to register
        priority - Priority to register this event at
        executor - EventExecutor to register
        plugin - Plugin to register
        ignoreCancelled - Whether to pass cancelled events or not
      • enablePlugin

        void enablePlugin​(@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
                           Plugin plugin)
        Disables the specified plugin

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

        Parameters:
        plugin - Plugin to disable
      • getPermission

        @Nullable
        Permission getPermission​(@NotNull
                                 String name)
        Gets a Permission from its fully qualified name
        Parameters:
        name - Name of the permission
        Returns:
        Permission, or null if none
      • addPermission

        void addPermission​(@NotNull
                           Permission perm)
        Adds a Permission to this plugin manager.

        If a permission is already defined with the given name of the new permission, an exception will be thrown.

        Parameters:
        perm - Permission to add
        Throws:
        IllegalArgumentException - Thrown when a permission with the same name already exists
      • removePermission

        void removePermission​(@NotNull
                              Permission perm)
        Removes a 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 Permissibles that have it.

        Parameters:
        perm - Permission to remove
      • removePermission

        void removePermission​(@NotNull
                              String name)
        Removes a 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 Permissibles that have it.

        Parameters:
        name - Permission to remove
      • getDefaultPermissions

        @NotNull
        Set<Permission> getDefaultPermissions​(boolean op)
        Gets the default permissions for the given op status
        Parameters:
        op - Which set of default permissions to get
        Returns:
        The default permissions
      • recalculatePermissionDefaults

        void recalculatePermissionDefaults​(@NotNull
                                           Permission perm)
        Recalculates the defaults for the given Permission.

        This will have no effect if the specified permission is not registered here.

        Parameters:
        perm - Permission to recalculate
      • subscribeToPermission

        void subscribeToPermission​(@NotNull
                                   String permission,
                                   @NotNull
                                   Permissible permissible)
        Subscribes the given Permissible for information about the requested Permission, by name.

        If the specified Permission changes in any form, the Permissible will be asked to recalculate.

        Parameters:
        permission - Permission to subscribe to
        permissible - Permissible subscribing
      • unsubscribeFromPermission

        void unsubscribeFromPermission​(@NotNull
                                       String permission,
                                       @NotNull
                                       Permissible permissible)
        Unsubscribes the given Permissible for information about the requested Permission, by name.
        Parameters:
        permission - Permission to unsubscribe from
        permissible - Permissible subscribing
      • getPermissionSubscriptions

        @NotNull
        Set<Permissible> getPermissionSubscriptions​(@NotNull
                                                    String permission)
        Gets a set containing all subscribed Permissibles to the given permission, by name
        Parameters:
        permission - Permission to query for
        Returns:
        Set containing all subscribed permissions
      • subscribeToDefaultPerms

        void subscribeToDefaultPerms​(boolean op,
                                     @NotNull
                                     Permissible permissible)
        Subscribes to the given Default permissions by operator status

        If the specified defaults change in any form, the Permissible will be asked to recalculate.

        Parameters:
        op - Default list to subscribe to
        permissible - Permissible subscribing
      • unsubscribeFromDefaultPerms

        void unsubscribeFromDefaultPerms​(boolean op,
                                         @NotNull
                                         Permissible permissible)
        Unsubscribes from the given Default permissions by operator status
        Parameters:
        op - Default list to unsubscribe from
        permissible - Permissible subscribing
      • getDefaultPermSubscriptions

        @NotNull
        Set<Permissible> getDefaultPermSubscriptions​(boolean op)
        Gets a set containing all subscribed Permissibles to the given default list, by op status
        Parameters:
        op - Default list to query for
        Returns:
        Set containing all subscribed permissions
      • getPermissions

        @NotNull
        Set<Permission> getPermissions()
        Gets a set of all registered permissions.

        This set is a copy and will not be modified live.

        Returns:
        Set containing all current registered permissions
      • useTimings

        boolean useTimings()
        Returns whether or not timing code should be used for event calls
        Returns:
        True if event timings are to be used