运行并调试你的插件
在打断点之前,先确保插件已经能在本地服务端里正常加载。
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 调试服务端进程。
- 使用 IntelliJ IDEA 打开你的插件工程。
- 在顶栏打开
运行/调试配置窗口。 - 选择
JAR Application模板。
- 参考下面这组配置:
| 字段 | 说明 |
|---|---|
| Name | Nukkit-MOT |
| JAR Path | Nukkit-MOT-SNAPSHOT.jar 的完整路径 |
| Working Directory | 你的本地 Nukkit-MOT 服务端目录 |
| JRE | Java 17 运行时 |
最后点击 OK。
接着在 onEnable() 中打一个断点,使用 Shift + F9 启动调试。
记得保持 jar 最新
断点只能命中你当前构建出来的代码。如果服务端还在加载旧 jar,调试结果会非常混乱。
继续之前
- 手动加载成功,是第一层验证
- 断点调试,是第二层验证
- 当插件已经能在本地稳定复现并调试后,继续阅读发布你的第一个插件