Skip to content

最简单的插件 ​

插件的本质 ​

Bukkit 插件就是一个基于 BukkitAPI 的 Java 应用。每个插件必须有两样东西:主类 + plugin.yml。

  • 主类:继承 JavaPlugin,是插件的入口
  • plugin.yml:告诉服务端这个插件的信息(名字、主类、版本等)

服务端加载插件时,先读 jar 里的 plugin.yml,再按其中的 main 找到主类实例化、调用生命周期方法。

第一个插件:HelloWorld ​

新建 Java 工程,把服务端 jar(Spigot/Paper)作为依赖导入(用 IDEA 的 Minecraft Development 插件可自动配好)。创建主类 HelloWorld 继承 JavaPlugin,覆写 onEnable 和 onDisable:

java
package tdiant.helloworld;

import org.bukkit.plugin.java.JavaPlugin;

public class HelloWorld extends JavaPlugin {
    @Override
    public void onEnable() {
        getLogger().info("Hello World!");
    }

    @Override
    public void onDisable() {}
}
  • 服务端启用插件时调用 onEnable(在这里做初始化:注册事件、命令、读配置)
  • 停用插件时调用 onDisable(做清理)

用 Logger 别用 println

getLogger().info(...) 会带上插件名前缀,方便在控制台日志里区分来源。不要用 System.out.println。

plugin.yml ​

主类有了还不够,得告诉 Bukkit 插件的信息。在资源目录创建 plugin.yml:

yml
name: HelloWorld
main: tdiant.helloworld.HelloWorld
version: 1
author: MinecraftDev

1.13 及以上必须加 api-version

如果你的插件基于新版 API(1.13+),plugin.yml 里要加 api-version:

yml
name: HelloWorld
main: tdiant.helloworld.HelloWorld
api-version: 1.13
version: 1
author: MinecraftDev

这会告诉 Bukkit 插件是基于新版 API 写的。若要同时兼容旧版,注意各版本 API 差异(如 1.12 进度系统取代成就、1.13 Material 枚举大改)。

各键说明 ​

键意义备注
name插件名不允许中文和空格,推荐只用英文和下划线
main主类完整名含包名,如 tdiant.helloworld.HelloWorld
version版本号建议用 X.X.X 格式
author作者可选;多人用 authors: [a, b]
api-versionAPI 版本1.13+ 必填

文件名固定、类名不固定

plugin.yml 这个文件名是固定的(服务端只认这个名字)。但主类的名字随便起,只要 main 里填对全名即可。

打包运行 ​

  1. 用 IDE/Gradle/Maven 把项目打成 jar
  2. 丢进服务端的 plugins/ 文件夹
  3. 重启服务端
  4. 看控制台是否打印 Hello World!(带插件名前缀)
  5. 游戏内 /plugins 能看到你的插件(绿色=正常加载)

颜色代码 ​

发消息给玩家时,用 ChatColor 或 §/& 加颜色:

java
player.sendMessage(ChatColor.GOLD + "欢迎来到服务器!");
player.sendMessage("§a绿色文字 §c红色文字");

常用 ChatColor:AQUA 青、BLACK 黑、BLUE 蓝、GOLD 金、GREEN 绿、RED 红、YELLOW 黄、WHITE 白、BOLD 加粗、ITALIC 斜体。

TIP

ChatColor 是枚举,IDE 里点进去能看到全部。§ 符号在中文输入法下不好打,推荐用 ChatColor 常量。


到这里你能做出一个"启动打印一行"的插件了。下一篇事件监听让插件真正响应游戏里发生的事。