跳到主要内容

Java 插件 API

生成的 Java 参考包含可搜索的类、方法和签名,并记录每个模块的源版本和提交。

编写集成 Nightbreak 插件的 Java 插件时使用本节。若要编写无需 Java 插件的游戏内容,请从 Lua 脚本指南开始。

选择插件​

下面的坐标都使用 com.magmaguy 组。这些版本在本次更新时已列于公共 Maven 仓库中;请选择与服务器上所装插件相符的版本。基于当前源码的 wiki 页面和生成的参考文档可能涵盖较新的构建,而其 Maven 构件尚未发布。

插件构件和版本开发者参考
EliteMobsEliteMobs:10.9.13实体、物品、事件、Lua 能力和 Mind 服务
FreeMinecraftModelsFreeMinecraftModels:2.14.2模型、交互、伪装、物品和魔法武器
ResourcePackManagerResourcePackManager:2.4.11包注册与重新加载
BetterStructuresBetterStructures:2.7.12结构生成事件
EternalTDEternalTD:1.7.10防御塔、波次与战斗事件
CannonRTPCannonRTP:1.2.9发射、目的地验证和着陆事件
ResurrectionChestResurrectionChest:2.3.9集成范围
BetterFoodBetterFood:1.5.7集成范围
MagmaCoreMagmaCore:2.2.0-SNAPSHOT嵌入式库设置与生命周期

添加插件依赖​

已发布插件从 MagmaGuy Maven 仓库解析。使用 Maven provided 或 Gradle compileOnly 针对已安装插件编译。你的集成 JAR 不应包含该插件的第二份副本。

例如,EliteMobs 集成使用:

pom.xml sections
<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.13</version>
<scope>provided</scope>
</dependency>
</dependencies>

等效的 Gradle Kotlin DSL:

build.gradle.kts sections
repositories {
maven("https://repo.magmaguy.com/releases")
}

dependencies {
compileOnly("com.magmaguy:EliteMobs:10.9.13")
}

项目还需要正常的 Bukkit/Paper API 依赖。示例使用 Java 21,请运行服务器要求的 Java 版本。

在插件描述文件中声明运行时依赖:

plugin.yml section
depend: [EliteMobs]

集成其他插件时替换构件、版本和插件名。BetterStructures 还要求服务器安装 WorldEdit。ResourcePackManager 的 Java 注册 API 在 Bukkit 后端运行;通用构件也包含代理组件,但这并不意味着代理插件可以调用此 Bukkit API。

若集成为可选项,请使用 softdepend,并在确认目标插件已启用后才加载集成类。不要把可选插件类型的引用放入始终加载的入口点。依赖顺序不代表异步内容初始化已经完成;请遵循目标插件的就绪和重新加载钩子。

MagmaCore 使用不同的打包约定。它是嵌入式库,请遵循其依赖打包与生命周期指南,不要使用本页的已安装插件流程。

生命周期和兼容性​

使用各指南记录的入口点。插件 JAR 中的公共 Java 类仍可能是实现细节。升级时检查对应发布版本的签名,尤其是使用 api 包之外的管理器或实体类时。

在服务器线程运行 Bukkit 实体和世界操作。避免用 HTTP 请求、文件访问或长时间计算阻塞事件处理器。从异步工作返回后重新检查实体和插件是否就绪。

只保留集成自己拥有的状态。插件停用时释放模型附件、注册和任务,并在重新加载后重新获取目标插件对象。保存的模型或地牢引用不能证明其运行时仍然存在。

ResurrectionChest​

ResurrectionChest 2.3.9 没有专用的自定义 Bukkit 事件 API 或集成门面。其 events 包包含内部 Bukkit 监听器,不要把这些监听器当作扩展点来构造。

服务器设置请使用记录的配置和命令。发布的 Maven 构件允许集成针对该版本编译,但不构成稳定的箱子管理契约。

如需自行构建该插件,请参阅从源码构建。

BetterFood​

BetterFood 1.5.7 没有专用的自定义 Bukkit 事件 API 或集成门面。其食物选择逻辑通过自己的 Bukkit 监听器运行。

支持的设置请使用行为指南和设置参考。连接普通 Bukkit 事件的代码应尊重取消状态和事件优先级,不要直接调用 BetterFood 的内部监听器。

如需自行构建该插件,请参阅从源码构建。

类和方法文档​

使用上面的指南了解集成模式,使用生成的 Java 参考查看类、方法和签名。将生成参考中记录的版本和源提交与集成使用的发布版本进行核对。