org.bukkit.plugin.Plugin Maven / Gradle / Ivy
Show all versions of chest-server Show documentation
package org.bukkit.plugin;
import com.avaje.ebean.EbeanServer;
import org.bukkit.Server;
import org.bukkit.command.TabExecutor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.generator.ChunkGenerator;
import java.io.File;
import java.io.InputStream;
import java.util.logging.Logger;
/**
* Represents a Plugin
*
* The use of {@link PluginBase} is recommended for actual Implementation
*/
public interface Plugin extends TabExecutor {
/**
* Returns the folder that the plugin data's files are located in. The
* folder may not yet exist.
*
* @return The folder
*/
File getDataFolder();
/**
* Returns the plugin.yaml file containing the details for this plugin
*
* @return Contents of the plugin.yaml file
*/
PluginDescriptionFile getDescription();
/**
* Gets a {@link 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.
*
* @return Plugin configuration
*/
FileConfiguration getConfig();
/**
* Gets an embedded resource in this plugin
*
* @param filename Filename of the resource
* @return File if found, otherwise null
*/
InputStream getResource(String filename);
/**
* Saves the {@link FileConfiguration} retrievable by {@link #getConfig()}.
*/
void saveConfig();
/**
* Saves the raw contents of the default config.yml file to the location
* retrievable by {@link #getConfig()}. If there is no default config.yml
* embedded in the plugin, an empty config.yml file is saved. This should
* fail silently if the config.yml already exists.
*/
void saveDefaultConfig();
/**
* Saves the raw contents of any resource embedded with a plugin's .jar
* file assuming it can be found using {@link #getResource(String)}.
*
* The resource is saved into the plugin's data folder using the same
* hierarchy as the .jar file (subdirectories are preserved).
*
* @param resourcePath the embedded resource path to look for within the
* plugin's .jar file. (No preceding slash).
* @param replace if true, the embedded resource will overwrite the
* contents of an existing file.
* @throws IllegalArgumentException if the resource path is null, empty,
* or points to a nonexistent resource.
*/
void saveResource(String resourcePath, boolean replace);
/**
* Discards any data in {@link #getConfig()} and reloads from disk.
*/
void reloadConfig();
/**
* Gets the associated PluginLoader responsible for this plugin
*
* @return PluginLoader that controls this plugin
*/
PluginLoader getPluginLoader();
/**
* Returns the Server instance currently running this plugin
*
* @return Server running this plugin
*/
Server getServer();
/**
* Returns a value indicating whether or not this plugin is currently
* enabled
*
* @return true if this plugin is enabled, otherwise false
*/
boolean isEnabled();
/**
* Called when this plugin is disabled
*/
void onDisable();
/**
* Called after a plugin is loaded but before it has been enabled.
*
* When mulitple plugins are loaded, the onLoad() for all plugins is
* called before any onEnable() is called.
*/
void onLoad();
/**
* Called when this plugin is enabled
*/
void onEnable();
/**
* Simple boolean if we can still nag to the logs about things
*
* @return boolean whether we can nag
*/
boolean isNaggable();
/**
* Set naggable state
*
* @param canNag is this plugin still naggable?
*/
void setNaggable(boolean canNag);
/**
* Gets the {@link EbeanServer} tied to this plugin. This will only be
* available if enabled in the {@link
* PluginDescriptionFile#isDatabaseEnabled()}
*
* For more information on the use of
* Avaje Ebeans ORM, see Avaje Ebeans
* Documentation
*
* For an example using Ebeans ORM, see Bukkit's Homebukkit Plugin
*
*
* @return ebean server instance or null if not enabled
*/
EbeanServer getDatabase();
/**
* Gets a {@link ChunkGenerator} for use in a default world, as specified
* in the server configuration
*
* @param worldName Name of the world that this will be applied to
* @param id Unique ID, if any, that was specified to indicate which
* generator was requested
* @return ChunkGenerator for use in the default world generation
*/
ChunkGenerator getDefaultWorldGenerator(String worldName, String id);
/**
* Returns the plugin logger associated with this server's logger. The
* returned logger automatically tags all log messages with the plugin's
* name.
*
* @return Logger associated with this plugin
*/
Logger getLogger();
/**
* Returns the name of the plugin.
*
* This should return the bare name of the plugin and should be used for
* comparison.
*
* @return name of the plugin
*/
String getName();
/**
* Returns the class loader of this plugin.
*/
ClassLoader getClassLoader();
}