创建插件
先决条件
- JDK 7 或更高版本(推荐:JDK 8+)
添加 Bukkit 作为依赖
将 Bukkit API 添加到项目中的最简单方法是直接从 Spigot Repository 下载 Bukkit.jar 并将其添加到项目的类路径中。可以在 Bukkit 存储库中找到 Bukkit 的旧版本。
另一种是通过在 pom.xml
中添加以下行来将其添加为 Maven 依赖项:
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<!--Bukkit API-->
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>{VERSION}</version>
<scope>provided</scope>
</dependency>
</dependencies>
主类
插件的主类是 Bukkit 加载插件交互的入口点。它是一个扩展 JavaPlugin
的类,只有一个实例应该由你的插件创建。按照惯例,最好为这个类提供与插件相同的名称。
以下是插件 MyPlugin
的主要插件类的示例:
package com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName};
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
//Called when the plugin is enabled
getLogger().info("onEnable has been invoked!");
}
@Override
public void onDisable() {
//Called when the plugin is disabled
getLogger().info("onDisable has been invoked!");
}
}
要从另一个类访问你的插件实例,你需要存储由 Bukkit 创建的 MyPlugin 类的实例,以便可以从类外部访问。
public class MyPlugin extends JavaPlugin {
private static MyPlugin instance; //Effectively final variable containing your plugin's instance
public MyPlugin(){
if(MyPlugin.instance != null) { //Unnecessary check but ensures your plugin is only initialized once.
throw new Error("Plugin already initialized!");
}
MyPlugin.instance = this; //A plugin's constructor should only be called once
}
public static MyPlugin getInstance(){ //Get's your plugin's instance
return instance;
}
//your other code...
}
然后,要从另一个类访问你的主类,只需使用 MyPlugin.getInstance()
public class MyOtherClass {
public void doSomethingWithMainClass(){
MyPlugin.getInstance().getLogger().info("We just used MyPlugin");
}
}
创建一个 plugin.yml
plugin.yml 文件位于最终 jar 文件的根目录中,并为 Bukkit 提供加载插件的基本信息。最简单的 plugin.yml 看起来像这样
name: {$PluginName} //The name of the plugin
main: {$PackageName}.{$MainClass} //The fully qualified name of the main class.
version: {$Version} //The plugin's version
例如,使用上面的 MyPlugin 类
name: MyPlugin
main: com.example.myplugin.MyPlugin
version: 1.0