最简单的插件
插件的本质
Bukkit 插件就是一个基于 BukkitAPI 的 Java 应用。每个插件必须有两样东西:主类 + plugin.yml。
- 主类:继承
JavaPlugin,是插件的入口 - plugin.yml:告诉服务端这个插件的信息(名字、主类、版本等)
服务端加载插件时,先读 jar 里的 plugin.yml,再按其中的 main 找到主类实例化、调用生命周期方法。
第一个插件:HelloWorld
新建 Java 工程,把服务端 jar(Spigot/Paper)作为依赖导入(用 IDEA 的 Minecraft Development 插件可自动配好)。创建主类 HelloWorld 继承 JavaPlugin,覆写 onEnable 和 onDisable:
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:
name: HelloWorld
main: tdiant.helloworld.HelloWorld
version: 1
author: MinecraftDev1.13 及以上必须加 api-version
如果你的插件基于新版 API(1.13+),plugin.yml 里要加 api-version:
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-version | API 版本 | 1.13+ 必填 |
文件名固定、类名不固定
plugin.yml 这个文件名是固定的(服务端只认这个名字)。但主类的名字随便起,只要 main 里填对全名即可。
打包运行
- 用 IDE/Gradle/Maven 把项目打成 jar
- 丢进服务端的
plugins/文件夹 - 重启服务端
- 看控制台是否打印
Hello World!(带插件名前缀) - 游戏内
/plugins能看到你的插件(绿色=正常加载)
颜色代码
发消息给玩家时,用 ChatColor 或 §/& 加颜色:
player.sendMessage(ChatColor.GOLD + "欢迎来到服务器!");
player.sendMessage("§a绿色文字 §c红色文字");常用 ChatColor:AQUA 青、BLACK 黑、BLUE 蓝、GOLD 金、GREEN 绿、RED 红、YELLOW 黄、WHITE 白、BOLD 加粗、ITALIC 斜体。
TIP
ChatColor 是枚举,IDE 里点进去能看到全部。§ 符号在中文输入法下不好打,推荐用 ChatColor 常量。
到这里你能做出一个"启动打印一行"的插件了。下一篇事件监听让插件真正响应游戏里发生的事。
