跳到主要内容

运行并调试你的插件

在打断点之前,先确保插件已经能在本地服务端里正常加载。

你现在的位置

第 3 步 / 共 4 步:把插件放进服务端,确认它能加载,然后再接入调试器。

上一步:插件基础结构

下一步:发布你的第一个插件

1. 准备本地服务端目录

先准备一个干净的测试目录,把 Nukkit-MOT 服务端 jar 放进去。

先启动一次服务端:

java -jar Nukkit-MOT-SNAPSHOT.jar

第一次启动后,服务端通常会生成 plugins/worlds/ 以及一些配置文件。生成完之后先把服务端关闭。

2. 把插件放进 plugins/

把上一页打出来的 jar 复制到服务端的 plugins/ 目录:

target/hello-world-plugin-1.0.0.jar -> <你的服务端>/plugins/

如果你改过构建产物名称,就复制你自己的那个 jar。

3. 启动服务端并确认插件已加载

再次启动服务端:

java -jar Nukkit-MOT-SNAPSHOT.jar

你至少应该看到两类成功信号:

  • 服务端日志里出现包含 HelloWorldPlugin v1.0.0 的加载信息
  • 你在 onEnable() 里输出的日志,例如 Hello from my first Nukkit-MOT plugin!

服务端启动后,还可以在控制台执行:

plugins

或者:

pl

如果插件加载成功,它就会出现在插件列表里。很多控制台主题下,成功加载的插件名会显示为绿色。

4. 如果加载失败,先排查这几项

大多数“第一个插件跑不起来”的问题都集中在这里:

  • plugin.yml 没有被打到 jar 根目录
  • main 字段和真实包名、类名不一致
  • jar 被复制到了服务端根目录,而不是 plugins/
  • depend 里声明的硬依赖没有安装
  • 你改了代码,但忘了重新构建 jar

如果插件名显示为红色,或者控制台直接打印异常堆栈,先检查这些,再考虑 Java 级别的断点调试。

5. 可选:每次构建后自动复制到 plugins/

当你已经能手动加载成功后,可以继续优化工作流,让 Maven 在构建完成后直接把 jar 写进服务端 plugins/ 目录。

先给 pom.xml 增加一个属性:

pom.xml
<properties>
<maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<nukkitPluginsPath>D:\BedrockServer\MOT\plugins</nukkitPluginsPath>
</properties>

然后添加构建配置:

pom.xml
<build>
<defaultGoal>clean package</defaultGoal>

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<outputDirectory>${nukkitPluginsPath}</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.5.0</version>
<configuration>
<filesets>
<fileset>
<directory>${nukkitPluginsPath}</directory>
<includes>
<include>${artifactId}*.jar</include>
</includes>
</fileset>
</filesets>
</configuration>
<executions>
<execution>
<phase>pre-clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

这样之后执行 mvn clean package,最新的 jar 就会直接写入插件目录。

6. 在 IntelliJ IDEA 中接入调试器

当插件已经能够正常加载后,再去配置 IntelliJ IDEA 调试服务端进程。

  1. 使用 IntelliJ IDEA 打开你的插件工程。
  1. 在顶栏打开 运行/调试配置 窗口。
  2. 选择 JAR Application 模板。
  1. 参考下面这组配置:
字段说明
NameNukkit-MOT
JAR PathNukkit-MOT-SNAPSHOT.jar 的完整路径
Working Directory你的本地 Nukkit-MOT 服务端目录
JREJava 17 运行时

最后点击 OK

接着在 onEnable() 中打一个断点,使用 Shift + F9 启动调试。

记得保持 jar 最新

断点只能命中你当前构建出来的代码。如果服务端还在加载旧 jar,调试结果会非常混乱。

继续之前

  • 手动加载成功,是第一层验证
  • 断点调试,是第二层验证
  • 当插件已经能在本地稳定复现并调试后,继续阅读发布你的第一个插件