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

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

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

import java.io.File;
import java.util.regex.Pattern;

/**
 * 描述一个插件加载器的接口。
* An interface to describe a plugin loader. * * @author iNevet(code) @ Nukkit Project * @author 粉鞋大妈(javadoc) @ Nukkit Project * @see JavaPluginLoader * @since Nukkit 1.0 | Nukkit API 1.0.0 */ public interface PluginLoader { /** * 通过文件名字的字符串,来加载和初始化一个插件。
* Loads and initializes a plugin by its file name. * *

这个方法应该设置好插件的相关属性。比如,插件所在的服务器对象,插件的加载器对象,插件的描述对象,插件的数据文件夹。
* Properties for loaded plugin should be set in this method. Such as, the {@code Server} object for which this * plugin is running in, the {@code PluginLoader} object for its loader, and the {@code File} object for its * data folder.

* *

如果插件加载失败,这个方法应该返回{@code null},或者抛出异常。
* If the plugin loader does not load this plugin successfully, a {@code null} should be returned, * or an exception should be thrown.

* * @param filename 这个插件的文件名字字符串。
A string of its file name. * @return 加载完毕的插件的 {@code Plugin}对象。
The loaded plugin as a {@code Plugin} object. * @throws java.lang.Exception 插件加载失败所抛出的异常。
Thrown when an error occurred. * @see #loadPlugin(File) * @see cn.nukkit.plugin.PluginBase#init(PluginLoader, cn.nukkit.Server, PluginDescription, File, File) * @since Nukkit 1.0 | Nukkit API 1.0.0 */ Plugin loadPlugin(String filename) throws Exception; /** * 通过插件的 {@code File}对象,来加载和初始化一个插件。
* Loads and initializes a plugin by a {@code File} object describes the file. * *

这个方法应该设置好插件的相关属性。比如,插件所在的服务器对象,插件的加载器对象,插件的描述对象,插件的数据文件夹。
* Properties for loaded plugin should be set in this method. Such as, the {@code Server} object for which this * plugin is running in, the {@code PluginLoader} object for its loader, and the {@code File} object for its * data folder.

* *

如果插件加载失败,这个方法应该返回{@code null},或者抛出异常。
* If the plugin loader does not load this plugin successfully, a {@code null} should be returned, * or an exception should be thrown.

* * @param file 这个插件的文件的 {@code File}对象。
A {@code File} object for this plugin. * @return 加载完毕的插件的 {@code Plugin}对象。
The loaded plugin as a {@code Plugin} object. * @throws java.lang.Exception 插件加载失败所抛出的异常。
Thrown when an error occurred. * @see #loadPlugin(String) * @see cn.nukkit.plugin.PluginBase#init(PluginLoader, cn.nukkit.Server, PluginDescription, File, File) * @since Nukkit 1.0 | Nukkit API 1.0.0 */ Plugin loadPlugin(File file) throws Exception; /** * 通过插件文件名的字符串,来获得描述这个插件的 {@code PluginDescription}对象。
* Gets a {@code PluginDescription} object describes the plugin by its file name. * *

如果插件的描述对象获取失败,这个方法应该返回{@code null}。
* If the plugin loader does not get its description successfully, a {@code null} should be returned.

* * @param filename 这个插件的文件名字。
A string of its file name. * @return 描述这个插件的 {@code PluginDescription}对象。
* A {@code PluginDescription} object describes the plugin. * @see #getPluginDescription(File) * @since Nukkit 1.0 | Nukkit API 1.0.0 */ PluginDescription getPluginDescription(String filename); /** * 通过插件的 {@code File}对象,来获得描述这个插件的 {@code PluginDescription}对象。
* Gets a {@code PluginDescription} object describes the plugin by a {@code File} object describes the plugin file. * *

如果插件的描述对象获取失败,这个方法应该返回{@code null}。
* If the plugin loader does not get its description successfully, a {@code null} should be returned.

* * @param file 这个插件的文件的 {@code File}对象。
A {@code File} object for this plugin. * @return 描述这个插件的 {@code PluginDescription}对象。
* A {@code PluginDescription} object describes the plugin. * @see #getPluginDescription(String) * @since Nukkit 1.0 | Nukkit API 1.0.0 */ PluginDescription getPluginDescription(File file); /** * 返回这个插件加载器支持的文件类型。
* Returns the file types this plugin loader supports. * *

在Nukkit读取所有插件时,插件管理器会查找所有已经安装的插件加载器,通过识别这个插件是否满足下面的条件, * 来选择对应的插件加载器。
* When Nukkit is trying to load all its plugins, the plugin manager will look for all installed plugin loader, * and choose the correct one by checking if this plugin matches the filters given below.

* *

举个例子,识别这个文件是否以jar为扩展名,它的正则表达式是:
* For example, to check if this file is has a "jar" extension, the regular expression should be:
* {@code ^.+\\.jar$}
* 所以只读取jar扩展名的插件加载器,这个函数应该写成:
* So, for a jar-extension-only file plugin loader, this method should be: *

*
 {@code           @Override}
     *      public Pattern[] getPluginFilters() {
     *          return new Pattern[]{Pattern.compile("^.+\\.jar$")};
     *      }
     * 
* * @return 表达这个插件加载器支持的文件类型的正则表达式数组。
* An array of regular expressions, that describes what kind of file this plugin loader supports. * @since Nukkit 1.0 | Nukkit API 1.0.0 */ Pattern[] getPluginFilters(); /** * 启用一个插件。
* Enables a plugin. * * @param plugin 要被启用的插件。
The plugin to enable. * @see #disablePlugin * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void enablePlugin(Plugin plugin); /** * 停用一个插件。
* Disables a plugin. * * @param plugin 要被停用的插件。
The plugin to disable. * @see #enablePlugin * @since Nukkit 1.0 | Nukkit API 1.0.0 */ void disablePlugin(Plugin plugin); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy