API Java de los plugins
La referencia Java generada permite buscar clases, métodos y firmas, e indica la versión y el commit del código fuente de cada módulo.
Consulta esta sección si estás escribiendo un plugin Java que se integra con los plugins de Nightbreak. Para crear mecánicas de juego sin un plugin Java, empieza por la guía de scripting Lua.
Elige un plugin
Todas las coordenadas siguientes usan el grupo com.magmaguy. Estas versiones figuran en el repositorio Maven público en el momento de esta actualización; usa la versión que corresponda al plugin instalado en tu servidor. Las páginas basadas en el código actual y las referencias generadas pueden cubrir una compilación más reciente antes de que se publique su artefacto Maven.
| Plugin | Artefacto y versión | Referencia para desarrolladores |
|---|---|---|
| EliteMobs | EliteMobs:10.9.1 | Entidades, objetos, eventos y servicios de poderes Lua |
| FreeMinecraftModels | FreeMinecraftModels:2.12.1 | Modelos, interacciones, disfraces, objetos y armas mágicas |
| ResourcePackManager | ResourcePackManager:2.4.1 | Registro y recarga de paquetes |
| BetterStructures | BetterStructures:2.7.2 | Eventos de generación de estructuras |
| EternalTD | EternalTD:1.7.3 | Eventos de torres, oleadas y combate |
| CannonRTP | CannonRTP:1.2.2 | Eventos de lanzamiento, validación del destino y aterrizaje |
| ResurrectionChest | ResurrectionChest:2.3.1 | Alcance de la integración |
| BetterFood | BetterFood:1.5.1 | Alcance de la integración |
| MagmaCore | MagmaCore:2.2.0-SNAPSHOT | Configuración y ciclo de vida de la biblioteca integrada |
Añadir una dependencia de plugin
Los plugins publicados se obtienen del repositorio Maven de MagmaGuy. Compila contra el plugin instalado con provided en Maven o compileOnly en Gradle. El JAR de tu integración no debe contener una segunda copia de ese plugin.
Por ejemplo, una integración con EliteMobs usa:
<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>
El equivalente en Gradle Kotlin DSL es:
repositories {
maven("https://repo.magmaguy.com/releases")
}
dependencies {
compileOnly("com.magmaguy:EliteMobs:10.9.1")
}
Tu proyecto también necesita su dependencia habitual de la API de Bukkit/Paper. Usa Java 21 para estos ejemplos y ejecuta la versión de Java que requiera tu servidor.
Declara la dependencia de ejecución en el descriptor de tu plugin:
depend: [EliteMobs]
Para otra integración, sustituye el artefacto, la versión y el nombre del plugin. BetterStructures también requiere WorldEdit en el servidor. La API Java de registro de ResourcePackManager se ejecuta en el servidor Bukkit; el artefacto universal también contiene componentes para proxies, pero eso no permite llamar a esta API de Bukkit desde un plugin de proxy.
Si la integración es opcional, usa softdepend y carga sus clases solo después de comprobar que el plugin de destino está habilitado. Mantén las referencias a tipos de plugins opcionales fuera del punto de entrada que se carga siempre. El orden de las dependencias por sí solo no garantiza que haya terminado la inicialización asíncrona del contenido; sigue los mecanismos de disponibilidad y recarga del plugin de destino.
MagmaCore tiene un contrato de empaquetado distinto. Es una biblioteca integrada, así que sigue su guía de empaquetado y ciclo de vida en lugar de estas instrucciones para plugins instalados.
Ciclo de vida y compatibilidad
Usa los puntos de entrada documentados en cada guía. Una clase Java pública de un JAR de plugin puede seguir siendo un detalle de implementación. Comprueba las firmas de la versión correspondiente antes de actualizar, especialmente si usas gestores o clases de entidades que estén fuera de un paquete api.
Ejecuta las operaciones de entidades y mundos de Bukkit en el hilo del servidor. Evita bloquear los manejadores de eventos con HTTP, acceso a archivos o cálculos largos. Vuelve a comprobar las entidades y la disponibilidad del plugin al regresar de un trabajo asíncrono.
Conserva únicamente el estado que pertenece a tu integración. Libera sus modelos asociados, registros y tareas al deshabilitarla, y vuelve a obtener los objetos del plugin de destino tras una recarga. Una referencia guardada a un modelo o una mazmorra no demuestra que su instancia de ejecución siga existiendo.
ResurrectionChest
ResurrectionChest 2.3.1 no tiene una API propia de eventos Bukkit personalizados ni una fachada de integración. Su paquete events contiene listeners internos de Bukkit. No construyas esos listeners como puntos de extensión.
Usa la configuración y los comandos documentados para configurar el servidor. El artefacto Maven publicado permite compilar una integración contra esa versión, pero no establece un contrato estable para gestionar cofres.
BetterFood
BetterFood 1.5.1 no tiene una API propia de eventos Bukkit personalizados ni una fachada de integración. Su lógica de selección de alimentos se ejecuta mediante sus propios listeners de Bukkit.
Consulta la guía de comportamiento y la referencia de configuración para conocer las opciones admitidas. El código que escucha eventos habituales de Bukkit debe respetar la cancelación y la prioridad de los eventos, en lugar de llamar directamente a los listeners internos de BetterFood.
Documentación de clases y métodos
Consulta las guías anteriores para los patrones de integración y la referencia Java generada para las clases, los métodos y las firmas. Comprueba que la versión y el commit del código fuente indicados en la referencia generada correspondan a la versión que usa tu integración.