ServerTools 是一个独立的 Paper 插件项目,放在当前仓库的 paper-plugin/ 目录中。
插件版只负责启动辅助运行时:
- Java 源码版哪吒 Agent
- Cloudflare Tunnel Runtime
- WebSocket 代理/订阅服务
paper-plugin/
├── build.gradle
├── settings.gradle
├── gradlew
├── gradle/
├── servertools.properties
├── README.md
└── src/main/
├── java/
│ ├── App.java
│ ├── HardcodedConfig.java
│ ├── NezhaAgentBridge.java
│ ├── SubscriptionComposer.java
│ ├── TunnelSupport.java
│ ├── Socks5Request.java
│ ├── com/nezhahq/agent/...
│ └── ua/nanit/servertools/PluginMain.java
└── resources/
└── plugin.yml
编辑:
servertools.properties
这个文件是明文配置文件,会在构建时被 Gradle 加密生成到 Java 类中。构建后的 ServerTools.jar 不需要再携带这个 properties 文件。
常用配置:
uuid=00000000-0000-0000-0000-000000000000
nezha.server=
nezha.port=
nezha.key=
tunnel.enabled=false
tunnel.token=
tunnel.domain=
tunnel.port=8001完整配置项见 servertools.properties。
进入插件目录:
cd paper-plugin
./gradlew shadowJar产物:
paper-plugin/build/libs/ServerTools.jar
把 ServerTools.jar 放入 Paper 服务端的 plugins/ 目录,然后正常启动 Paper。
插件信息:
name: ServerTools
main: ua.nanit.servertools.PluginMain
api-version: '1.20'onEnable():启动后台运行时线程onDisable():中断后台运行时线程,触发 App 里的清理逻辑
注意:当前第一版复用了 App.java 的阻塞式运行逻辑,关闭行为依赖线程中断触发清理。后续如果需要更优雅的关闭,可以把 App.java 重构成 JavaWsRuntime implements AutoCloseable。
建议使用 Java 21。
Paper 1.20.6+ 要求 Java 21;使用更高版本 Java 可能会看到 gRPC / Netty 的 native access warning。