Java 插件 API
生成的 Java 参考包含可搜索的类、方法和签名,并记录每个模块的源版本和提交。
编写集成 Nightbreak 插件的 Java 插件时使用本节。若要编写无需 Java 插件的游戏内容,请从 Lua 脚本指南开始。
选择插件
下面的坐标都使用 com.magmaguy 组。这些版本在本次更新时已列于公共 Maven 仓库中;请选择与服务器上所装插件相符的版本。基于当前源码的 wiki 页面和生成的参考文档可能涵盖较新的构建,而其 Maven 构件尚未发布。
| 插件 | 构件和版本 | 开发者参考 |
|---|---|---|
| EliteMobs | EliteMobs:10.9.1 | 实体、物品、事件和 Lua 能力服务 |
| FreeMinecraftModels | FreeMinecraftModels:2.12.1 | 模型、交互、伪装、物品和魔法武器 |
| ResourcePackManager | ResourcePackManager:2.4.1 | 包注册与重新加载 |
| BetterStructures | BetterStructures:2.7.2 | 结构生成事件 |
| EternalTD | EternalTD:1.7.3 | 防御塔、波次与战斗事件 |
| CannonRTP | CannonRTP:1.2.2 | 发射、目的地验证和着陆事件 |
| ResurrectionChest | ResurrectionChest:2.3.1 | 集成范围 |
| BetterFood | BetterFood:1.5.1 | 集成范围 |
| MagmaCore | MagmaCore:2.2.0-SNAPSHOT | 嵌入式库设置与生命周期 |
添加插件依赖
已发布插件从 MagmaGuy Maven 仓库解析。使用 Maven provided 或 Gradle compileOnly 针对已安装插件编译。你的集成 JAR 不应包含该插件的第二份副本。
例如,EliteMobs 集成使用:
<repositories>
<repository>
<id>magmaguy-releases</id>
<url>https://repo.magmaguy.com/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.magmaguy</groupId>
<artifactId>EliteMobs</artifactId>
<version>10.9.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
等效的 Gradle Kotlin DSL:
repositories {
maven("https://repo.magmaguy.com/releases")
}
dependencies {
compileOnly("com.magmaguy:EliteMobs:10.9.1")
}
项目还需要正常的 Bukkit/Paper API 依赖。示例使用 Java 21,请运行服务器要求的 Java 版本。
在插件描述文件中声明运行时依赖:
depend: [EliteMobs]
集成其他插件时替换构件、版本和插件名。BetterStructures 还要求服务器安装 WorldEdit。ResourcePackManager 的 Java 注册 API 在 Bukkit 后端运行;通用构件也包含代理组件,但这并不意味着代理插件可以调用此 Bukkit API。
若集成为可选项,请使用 softdepend,并在确认目标插件已启用后才加载集成类。不要把可选插件类型的引用放入始终加载的入口点。依赖顺序不代表异步内容初始化已经完成;请遵循目标插件的就绪和重新加载钩子。
MagmaCore 使用不同的打包约定。它是嵌入式库,请遵循其依赖打包与生命周期指南,不要使用本页的已安装插件流程。
生命周期和兼容性
使用各指南记录的入口点。插件 JAR 中的公共 Java 类仍可能是实现细节。升级时检查对应发布版本的签名,尤其是使用 api 包之外的管理器或实体类时。
在服务器线程运行 Bukkit 实体和世界操作。避免用 HTTP 请求、文件访问或长时间计算阻塞事件处理器。从异步工作返回后重新检查实体和插件是否就绪。
只保留集成自己拥有的状态。插件停用时释放模型附件、注册和任务,并在重新加载后重新获取目标插件对象。保存的模型或地牢引用不能证明其运行时仍然存在。
ResurrectionChest
ResurrectionChest 2.3.1 没有专用的自定义 Bukkit 事件 API 或集成门面。其 events 包包含内部 Bukkit 监听器,不要把这些监听器当作扩展点来构造。
服务器设置请使用记录的配置和命令。发布的 Maven 构件允许集成针对该版本编译,但不构成稳定的箱子管理契约。
BetterFood
BetterFood 1.5.1 没有专用的自定义 Bukkit 事件 API 或集成门面。其食物选择逻辑通过自己的 Bukkit 监听器运行。
支持的设置请使用行为指南和设置参考。连接普通 Bukkit 事件的代码应尊重取消状态和事件优先级,不要直接调用 BetterFood 的内部监听器。
类和方法文档
使用上面的指南了解集成模式,使用生成的 Java 参考查看类、方法和签名。将生成参考中记录的版本和源提交与集成使用的发布版本进行核对。