All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.nukkit.plugin.Plugin Maven / Gradle / Ivy

There is a newer version: 1.20.40-r1
Show newest version
package cn.nukkit.plugin;

import cn.nukkit.Server;
import cn.nukkit.api.PowerNukkitOnly;
import cn.nukkit.api.PowerNukkitXOnly;
import cn.nukkit.api.Since;
import cn.nukkit.command.CommandExecutor;
import cn.nukkit.utils.Config;

import java.io.File;
import java.io.InputStream;

/**
 * 所有Nukkit插件必须实现的接口。
* An interface what must be implemented by all Nukkit plugins. * *

对于插件作者,我们建议让插件主类继承{@link cn.nukkit.plugin.PluginBase}类,而不是实现这个接口。
* For plugin developers: it's recommended to use {@link cn.nukkit.plugin.PluginBase} for an actual plugin * instead of implement this interface.

* * @author MagicDroidX(code) @ Nukkit Project * @author 粉鞋大妈(javadoc) @ Nukkit Project * @see cn.nukkit.plugin.PluginBase * @see cn.nukkit.plugin.PluginDescription * @since Nukkit 1.0 | Nukkit API 1.0.0 */ public interface Plugin extends CommandExecutor { @PowerNukkitOnly @Since("1.4.0.0-PN") Plugin[] EMPTY_ARRAY = new Plugin[0]; /** * 在一个Nukkit插件被加载时调用的方法。这个方法会在{@link Plugin#onEnable()}之前调用。
* Called when a Nukkit plugin is loaded, before {@link Plugin#onEnable()} . * *

应该填写加载插件时需要作出的动作。例如:初始化数组、初始化数据库连接。
* Use this to init a Nukkit plugin, such as init arrays or init database connections.

* * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void onLoad(); /** * 在一个Nukkit插件被启用时调用的方法。
* Called when a Nukkit plugin is enabled. * *

应该填写插件启用时需要作出的动作。例如:读取配置文件、读取资源、连接数据库。
* Use this to open config files, open resources, connect databases.

* *

注意到可能存在的插件管理器插件,这个方法在插件多次重启时可能被调用多次。
* Notes that there may be plugin manager plugins, * this method can be called many times when a plugin is restarted many times.

* * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void onEnable(); /** * 返回这个Nukkit插件是否已启用。
* Whether this Nukkit plugin is enabled. * * @return 这个插件是否已经启用。
Whether this plugin is enabled. * @since Nukkit 1.0 | Nukkit API 1.0.0 */ boolean isEnabled(); /** * 在一个Nukkit插件被停用时调用的方法。
* Called when a Nukkit plugin is disabled. * *

应该填写插件停用时需要作出的动作。例如:关闭数据库,断开资源。
* Use this to free open things and finish actions, * such as disconnecting databases and close resources.

* *

注意到可能存在的插件管理器插件,这个方法在插件多次重启时可能被调用多次。
* Notes that there may be plugin manager plugins, * this method can be called many times when a plugin is restarted many times.

* * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void onDisable(); /** * 返回这个Nukkit插件是否已停用。
* Whether this Nukkit plugin is disabled. * * @return 这个插件是否已经停用。
Whether this plugin is disabled. * @since Nukkit 1.0 | Nukkit API 1.0.0 */ boolean isDisabled(); /** * 返回这个Nukkit插件的数据文件夹。
* The data folder of this Nukkit plugin. * *

一般情况下,数据文件夹名字与插件名字相同,而且都放在nukkit安装目录下的plugins文件夹里。
* Under normal circumstances, the data folder has the same name with the plugin, * and is placed in the 'plugins' folder inside the nukkit installation directory.

* * @return 这个插件的数据文件夹。
The data folder of this plugin. * @since Nukkit 1.0 | Nukkit API 1.0.0 */ File getDataFolder(); /** * 返回描述这个Nukkit插件的{@link PluginDescription}对象。
* The description this Nukkit plugin as a {@link PluginDescription} object. * *

对于jar格式的Nukkit插件,插件的描述在plugin.yml文件内定义。
* For jar-packed Nukkit plugins, the description is defined in the 'plugin.yml' file.

* * @return 这个插件的描述。
A description of this plugin. * @see cn.nukkit.plugin.PluginDescription * @since Nukkit 1.0 | Nukkit API 1.0.0 */ PluginDescription getDescription(); /** * 读取这个插件特定的资源文件,并返回为{@code InputStream}对象。
* Reads a resource of this plugin, and returns as an {@code InputStream} object. * *

对于jar格式的Nukkit插件,Nukkit会在jar包内的资源文件夹(一般为resources文件夹)寻找资源文件。
* For jar-packed Nukkit plugins, Nukkit will look for your resource file in the resources folder, * which is normally named 'resources' and placed in plugin jar file.

* *

当你需要把一个文件的所有内容读取为字符串,可以使用{@link cn.nukkit.utils.Utils#readFile}函数, * 来从{@code InputStream}读取所有内容为字符串。例如:
* When you need to read the whole file content as a String, you can use {@link cn.nukkit.utils.Utils#readFile} * to read from a {@code InputStream} and get whole content as a String. For example:

*

String string = Utils.readFile(this.getResource("string.txt"));

* * @param filename 要读取的资源文件名字。
The name of the resource file to read. * @return 读取的资源文件的 {@code InputStream}对象。若错误会返回{@code null}
* The resource as an {@code InputStream} object, or {@code null} when an error occurred. * @since Nukkit 1.0 | Nukkit API 1.0.0 */ InputStream getResource(String filename); /** * 保存这个Nukkit插件的资源。
* Saves the resource of this plugin. * *

对于jar格式的Nukkit插件,Nukkit会在jar包内的资源文件夹寻找资源文件,然后保存到数据文件夹。
* For jar-packed Nukkit plugins, Nukkit will look for your resource file in the resources folder, * which is normally named 'resources' and placed in plugin jar file, and copy it into data folder.

* *

这个函数通常用来在插件被加载(load)时,保存默认的资源文件。这样插件在启用(enable)时不会错误读取空的资源文件, * 用户也无需从开发者处手动下载资源文件后再使用插件。
* This is usually used to save the default plugin resource when the plugin is LOADED .If this is used, * it won't happen to load an empty resource when plugin is ENABLED, and plugin users are not required to get * default resources from the developer and place it manually.

* *

如果需要替换已存在的资源文件,建议使用{@link cn.nukkit.plugin.Plugin#saveResource(String, boolean)}
* If you need to REPLACE an existing resource file, it's recommended * to use {@link cn.nukkit.plugin.Plugin#saveResource(String, boolean)}.

* * @param filename 要保存的资源文件名字。
The name of the resource file to save. * @return 保存是否成功。
true if the saving action is successful. * @see cn.nukkit.plugin.Plugin#saveDefaultConfig * @see cn.nukkit.plugin.Plugin#saveResource(String, boolean) * @since Nukkit 1.0 | Nukkit API 1.0.0 */ boolean saveResource(String filename); /** * 保存或替换这个Nukkit插件的资源。
* Saves or replaces the resource of this plugin. * *

对于jar格式的Nukkit插件,Nukkit会在jar包内的资源文件夹寻找资源文件,然后保存到数据文件夹。
* For jar-packed Nukkit plugins, Nukkit will look for your resource file in the resources folder, * which is normally named 'resources' and placed in plugin jar file, and copy it into data folder.

* *

如果需要保存默认的资源文件,建议使用{@link cn.nukkit.plugin.Plugin#saveResource(String)}
* If you need to SAVE DEFAULT resource file, it's recommended * to use {@link cn.nukkit.plugin.Plugin#saveResource(String)}.

* * @param filename 要保存的资源文件名字。
The name of the resource file to save. * @param replace 是否替换目标文件。
if true, Nukkit will replace the target resource file. * @return 保存是否成功。
true if the saving action is successful. * @see cn.nukkit.plugin.Plugin#saveResource(String) * @since Nukkit 1.0 | Nukkit API 1.0.0 */ boolean saveResource(String filename, boolean replace); boolean saveResource(String filename, String outputName, boolean replace); /** * 返回这个Nukkit插件配置文件的{@link cn.nukkit.utils.Config}对象。
* The config file this Nukkit plugin as a {@link cn.nukkit.utils.Config} object. * *

一般地,插件的配置保存在数据文件夹下的config.yml文件。
* Normally, the plugin config is saved in the 'config.yml' file in its data folder.

* * @return 插件的配置文件。
The configuration of this plugin. * @see cn.nukkit.plugin.Plugin#getDataFolder * @since Nukkit 1.0 | Nukkit API 1.0.0 */ Config getConfig(); /** * 保存这个Nukkit插件的配置文件。
* Saves the plugin config. * * @see cn.nukkit.plugin.Plugin#getDataFolder * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void saveConfig(); /** * 保存这个Nukkit插件的默认配置文件。
* Saves the DEFAULT plugin config. * *

执行这个函数时,Nukkit会在资源文件夹内寻找开发者配置好的默认配置文件config.yml,然后保存在数据文件夹。 * 如果数据文件夹已经有一个config.yml文件,Nukkit不会替换这个文件。
* When this is used, Nukkit will look for the default 'config.yml' file which is configured by plugin developer * and save it to the data folder. If a config.yml file exists in the data folder, Nukkit won't replace it.

* *

这个函数通常用来在插件被加载(load)时,保存默认的配置文件。这样插件在启用(enable)时不会错误读取空的配置文件, * 用户也无需从开发者处手动下载配置文件保存后再使用插件。
* This is usually used to save the default plugin config when the plugin is LOADED .If this is used, * it won't happen to load an empty config when plugin is ENABLED, and plugin users are not required to get * default config from the developer and place it manually.

* * @see cn.nukkit.plugin.Plugin#getDataFolder * @see cn.nukkit.plugin.Plugin#saveResource * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void saveDefaultConfig(); /** * 重新读取这个Nukkit插件的默认配置文件。
* Reloads the plugin config. * *

执行这个函数时,Nukkit会从数据文件夹中的config.yml文件重新加载配置。 * 这样用户在调整插件配置后,无需重启就可以马上使用新的配置。
* By using this, Nukkit will reload the config from 'config.yml' file, then it isn't necessary to restart * for plugin user who changes the config and needs to use new config at once.

* * @see cn.nukkit.plugin.Plugin#getDataFolder * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void reloadConfig(); /** * 返回运行这个插件的服务器的{@link cn.nukkit.Server}对象。
* Gets the server which is running this plugin, and returns as a {@link cn.nukkit.Server} object. * * @see cn.nukkit.Server * @since Nukkit 1.0 | Nukkit API 1.0.0 */ Server getServer(); /** * 返回这个插件的名字。
* Returns the name of this plugin. * *

Nukkit会从已经读取的插件描述中获取插件的名字。
* Nukkit will read plugin name from plugin description.

* * @see cn.nukkit.plugin.Plugin#getDescription * @since Nukkit 1.0 | Nukkit API 1.0.0 */ String getName(); /** * 返回这个插件的日志记录器为{@link cn.nukkit.plugin.PluginLogger}对象。
* Returns the logger of this plugin as a {@link cn.nukkit.plugin.PluginLogger} object. * *

使用日志记录器,你可以在控制台和日志文件输出信息。
* You can use a plugin logger to output messages to the console and log file.

* * @see cn.nukkit.plugin.PluginLogger * @since Nukkit 1.0 | Nukkit API 1.0.0 */ PluginLogger getLogger(); /** * 返回这个插件的加载器为{@link cn.nukkit.plugin.PluginLoader}对象。
* Returns the loader of this plugin as a {@link cn.nukkit.plugin.PluginLoader} object. * * @see cn.nukkit.plugin.PluginLoader * @since Nukkit 1.0 | Nukkit API 1.0.0 */ PluginLoader getPluginLoader(); /** * 返回这个插件的文件{@code File}对象。
* Returns the {@code File} object of this plugin itself. * * @return 这个插件的文件 {@code File}对象。
The {@code File} object of this plugin itself. */ @PowerNukkitXOnly @Since("1.19.50-r3") File getFile(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy