Class JavaPlugin

java.lang.Object
org.bukkit.plugin.PluginBase
org.bukkit.plugin.java.JavaPlugin
All Implemented Interfaces:
LifecycleEventOwner, CommandExecutor, TabCompleter, TabExecutor, Plugin

public abstract class JavaPlugin extends PluginBase
Represents a Java plugin and its main class. It contains fundamental methods and fields for a plugin to be loaded and work properly. This is an indirect implementation of Plugin.
  • Constructor Details

  • Method Details

    • getDataFolder

      @NotNull public final @NotNull File getDataFolder()
      Returns the folder that the plugin data files are located in. The folder may not yet exist.
      Returns:
      The folder.
    • getPluginLoader

      @NotNull @Deprecated(forRemoval=true) public final @NotNull PluginLoader getPluginLoader()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Plugin loading now occurs at a point which makes it impossible to expose this behavior. This instance will only throw unsupported operation exceptions.
      Gets the associated PluginLoader responsible for this plugin
      Returns:
      PluginLoader that controls this plugin
    • getServer

      @NotNull public final @NotNull Server getServer()
      Returns the Server instance currently running this plugin
      Returns:
      Server running this plugin
    • isEnabled

      public final boolean isEnabled()
      Returns a value indicating whether or not this plugin is currently enabled
      Returns:
      true if this plugin is enabled, otherwise false
    • getFile

      @NotNull protected @NotNull File getFile()
      Returns the file which contains this plugin
      Returns:
      File containing this plugin
    • getDescription

      @NotNull @Deprecated public final @NotNull PluginDescriptionFile getDescription()
      Deprecated.
      No longer applicable to all types of plugins
      Returns the plugin.yml file containing the details for this plugin
      Returns:
      Contents of the plugin.yml file
      See Also:
    • getPluginMeta

      @NotNull public final PluginMeta getPluginMeta()
      Description copied from interface: Plugin
      Gets the plugin meta for this plugin.
      Returns:
      configuration
    • getConfig

      @NotNull public @NotNull FileConfiguration getConfig()
      Description copied from interface: Plugin
      Gets a FileConfiguration for this plugin, read through "config.yml"

      If there is a default config.yml embedded in this plugin, it will be provided as a default for this Configuration.

      Returns:
      Plugin configuration
    • getTextResource

      @Nullable protected final @Nullable Reader getTextResource(@NotNull @NotNull String file)
      Provides a reader for a text file located inside the jar.

      The returned reader will read text with the UTF-8 charset.

      Parameters:
      file - the filename of the resource to load
      Returns:
      null if getResource(String) returns null
      Throws:
      IllegalArgumentException - if file is null
      See Also:
    • reloadConfig

      public void reloadConfig()
      Description copied from interface: Plugin
      Discards any data in Plugin.getConfig() and reloads from disk.
    • saveConfig

      public void saveConfig()
      Description copied from interface: Plugin
      Saves the FileConfiguration retrievable by Plugin.getConfig().
    • saveDefaultConfig

      public void saveDefaultConfig()
      Description copied from interface: Plugin
      Saves the raw contents of the default config.yml file to the location retrievable by Plugin.getConfig().

      This should fail silently if the config.yml already exists.

    • saveResource

      public void saveResource(@NotNull @NotNull String resourcePath, boolean replace)
      Description copied from interface: Plugin
      Saves the raw contents of any resource embedded with a plugin's .jar file assuming it can be found using Plugin.getResource(String).

      The resource is saved into the plugin's data folder using the same hierarchy as the .jar file (subdirectories are preserved).

      Parameters:
      resourcePath - the embedded resource path to look for within the plugin's .jar file. (No preceding slash).
      replace - if true, the embedded resource will overwrite the contents of an existing file.
    • getResource

      @Nullable public @Nullable InputStream getResource(@NotNull @NotNull String filename)
      Description copied from interface: Plugin
      Gets an embedded resource in this plugin
      Parameters:
      filename - Filename of the resource
      Returns:
      File if found, otherwise null
    • getClassLoader

      @NotNull protected final @NotNull ClassLoader getClassLoader()
      Returns the ClassLoader which holds this plugin
      Returns:
      ClassLoader holding this plugin
    • setEnabled

      @Internal public final void setEnabled(boolean enabled)
      Sets the enabled state of this plugin
      Parameters:
      enabled - true if enabled, otherwise false
    • init

      public final void init(@NotNull @NotNull PluginLoader loader, @NotNull @NotNull Server server, @NotNull @NotNull PluginDescriptionFile description, @NotNull @NotNull File dataFolder, @NotNull @NotNull File file, @NotNull @NotNull ClassLoader classLoader)
    • init

      public final void init(@NotNull @NotNull Server server, @NotNull @NotNull PluginDescriptionFile description, @NotNull @NotNull File dataFolder, @NotNull @NotNull File file, @NotNull @NotNull ClassLoader classLoader, @Nullable PluginMeta configuration, @NotNull @NotNull Logger logger)
    • onCommand

      public boolean onCommand(@NotNull @NotNull CommandSender sender, @NotNull @NotNull Command command, @NotNull @NotNull String label, @NotNull @NotNull String[] args)
      Executes the given command, returning its success.
      If false is returned, then the "usage" plugin.yml entry for this command (if defined) will be sent to the player.
      Parameters:
      sender - Source of the command
      command - Command which was executed
      label - Alias of the command which was used
      args - Passed command arguments
      Returns:
      true if a valid command, otherwise false
    • onTabComplete

      Requests a list of possible completions for a command argument.
      Parameters:
      sender - Source of the command. For players tab-completing a command inside of a command block, this will be the player, not the command block.
      command - Command which was executed
      alias - Alias of the command which was used
      args - The arguments passed to the command, including final partial argument to be completed
      Returns:
      A List of possible completions for the final argument, or null to default to the command executor
    • getCommand

      Gets the command with the given name, specific to this plugin. Commands need to be registered in the PluginDescriptionFile to exist at runtime.
      Parameters:
      name - name or alias of the command
      Returns:
      the plugin command if found, otherwise null
    • onLoad

      public void onLoad()
      Description copied from interface: Plugin
      Called after a plugin is loaded but before it has been enabled.

      When multiple plugins are loaded, the onLoad() for all plugins is called before any onEnable() is called.

    • onDisable

      public void onDisable()
      Description copied from interface: Plugin
      Called when this plugin is disabled
    • onEnable

      public void onEnable()
      Description copied from interface: Plugin
      Called when this plugin is enabled
    • getDefaultWorldGenerator

      @Nullable public @Nullable ChunkGenerator getDefaultWorldGenerator(@NotNull @NotNull String worldName, @Nullable @Nullable String id)
      Description copied from interface: Plugin
      Gets a ChunkGenerator for use in a default world, as specified in the server configuration
      Parameters:
      worldName - Name of the world that this will be applied to
      id - Unique ID, if any, that was specified to indicate which generator was requested
      Returns:
      ChunkGenerator for use in the default world generation
    • getDefaultBiomeProvider

      @Nullable public @Nullable BiomeProvider getDefaultBiomeProvider(@NotNull @NotNull String worldName, @Nullable @Nullable String id)
      Description copied from interface: Plugin
      Gets a BiomeProvider for use in a default world, as specified in the server configuration
      Parameters:
      worldName - Name of the world that this will be applied to
      id - Unique ID, if any, that was specified to indicate which biome provider was requested
      Returns:
      BiomeProvider for use in the default world generation
    • isNaggable

      public final boolean isNaggable()
      Description copied from interface: Plugin
      Simple boolean if we can still nag to the logs about things
      Returns:
      boolean whether we can nag
    • setNaggable

      public final void setNaggable(boolean canNag)
      Description copied from interface: Plugin
      Set naggable state
      Parameters:
      canNag - is this plugin still naggable?
    • getLogger

      @NotNull public @NotNull Logger getLogger()
      Description copied from interface: Plugin
      Returns the plugin logger associated with this server's logger. The returned logger automatically tags all log messages with the plugin's name.
      Returns:
      Logger associated with this plugin
    • toString

      @NotNull public @NotNull String toString()
      Overrides:
      toString in class Object
    • getPlugin

      @NotNull public static <T extends JavaPlugin> T getPlugin(@NotNull @NotNull Class<T> clazz)
      This method provides fast access to the plugin that has provided the given plugin class, which is usually the plugin that implemented it.

      An exception to this would be if plugin's jar that contained the class does not extend the class, where the intended plugin would have resided in a different jar / classloader.

      Type Parameters:
      T - a class that extends JavaPlugin
      Parameters:
      clazz - the class desired
      Returns:
      the plugin that provides and implements said class
      Throws:
      IllegalArgumentException - if clazz is null
      IllegalArgumentException - if clazz does not extend JavaPlugin
      IllegalStateException - if clazz was not provided by a plugin, for example, if called with JavaPlugin.getPlugin(JavaPlugin.class)
      IllegalStateException - if called from the static initializer for given JavaPlugin
      ClassCastException - if plugin that provided the class does not extend the class
    • getProvidingPlugin

      @NotNull public static @NotNull JavaPlugin getProvidingPlugin(@NotNull @NotNull Class<?> clazz)
      This method provides fast access to the plugin that has provided the given class.
      Parameters:
      clazz - a class belonging to a plugin
      Returns:
      the plugin that provided the class
      Throws:
      IllegalArgumentException - if the class is not provided by a JavaPlugin
      IllegalArgumentException - if class is null
      IllegalStateException - if called from the static initializer for given JavaPlugin
    • getLifecycleManager

      public final @NotNull LifecycleEventManager<Plugin> getLifecycleManager()
      Description copied from interface: Plugin
      Get the lifecycle event manager for registering handlers for lifecycle events allowed on the Plugin.
      Returns:
      the lifecycle event manager