跳到主要内容

第一个 Java 插件

本页带你从零创建一个最小可运行的 HelloWorld 插件。完成后,你会得到一个可以被 Nukkit-MOT 加载的 .jar 文件。

你现在的位置

第 1 步 / 共 4 步:创建工程、添加依赖、打出第一个插件 jar。

下一步:插件基础结构

你需要准备什么

  • Java 17 或更高版本
  • IntelliJ IDEA Community 或其他 Java IDE
  • Maven
  • 一个本地 Nukkit-MOT 服务端目录,下一页会用到

创建 Maven 工程

新建一个标准 Maven 工程,参数可以参考下面这组:

设置项示例值
GroupIdcom.example
ArtifactIdhello-world-plugin
NameHelloWorldPlugin
Packagecom.example.helloworld
JDK17

工程创建完成后,将 pom.xml 替换为下面这个示例。仓库地址和依赖坐标与当前 Nukkit-MOTREADME.md 保持一致:

pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>hello-world-plugin</artifactId>
<version>1.0.0</version>
<name>HelloWorldPlugin</name>

<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<repositories>
<repository>
<id>repo-lanink-cn</id>
<url>https://repo.lanink.cn/repository/maven-public/</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>cn.nukkit</groupId>
<artifactId>Nukkit</artifactId>
<version>MOT-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

工程结构

请创建下面这些文件:

hello-world-plugin/
├─ pom.xml
└─ src/
└─ main/
├─ java/
│ └─ com/
│ └─ example/
│ └─ helloworld/
│ └─ HelloWorldPlugin.java
└─ resources/
└─ plugin.yml

创建主类

创建 src/main/java/com/example/helloworld/HelloWorldPlugin.java

src/main/java/com/example/helloworld/HelloWorldPlugin.java
package com.example.helloworld;

import cn.nukkit.plugin.PluginBase;

public final class HelloWorldPlugin extends PluginBase {

@Override
public void onEnable() {
this.getLogger().info("Hello from my first Nukkit-MOT plugin!");
}
}

onEnable() 是最常用的插件生命周期方法之一。插件被服务端成功启用后,这个方法就会被调用。

创建 plugin.yml

创建 src/main/resources/plugin.yml

src/main/resources/plugin.yml
name: HelloWorldPlugin
main: com.example.helloworld.HelloWorldPlugin
version: "1.0.0"
api: ["1.0.0"]
author: YourName
description: My first Nukkit-MOT plugin

这个文件是必须的。Nukkit-MOT 会从 jar 中读取它,并根据其中的信息找到你的插件入口类。

仔细检查 main 字段

main 必须和你的 Java 包名、类名完全一致。只要指向错了,插件就无法加载。

构建插件 Jar

在工程根目录执行:

mvn clean package

如果你使用 IntelliJ IDEA,也可以在 Maven 面板中先执行 clean,再执行 package

构建产物通常是:

target/hello-world-plugin-1.0.0.jar

由于 plugin.yml 位于 src/main/resources/,Maven 会自动把它打进 jar 根目录。

继续之前

  • 如果 Maven 无法解析 cn.nukkit:Nukkit:MOT-SNAPSHOT,先检查仓库地址和网络连接
  • 如果工程已经能成功构建,继续阅读插件基础结构