建立外掛
先決條件
- 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