Saltar al contenido principal

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.

PluginArtefacto y versiónReferencia para desarrolladores
EliteMobsEliteMobs:10.9.1Entidades, objetos, eventos y servicios de poderes Lua
FreeMinecraftModelsFreeMinecraftModels:2.12.1Modelos, interacciones, disfraces, objetos y armas mágicas
ResourcePackManagerResourcePackManager:2.4.1Registro y recarga de paquetes
BetterStructuresBetterStructures:2.7.2Eventos de generación de estructuras
EternalTDEternalTD:1.7.3Eventos de torres, oleadas y combate
CannonRTPCannonRTP:1.2.2Eventos de lanzamiento, validación del destino y aterrizaje
ResurrectionChestResurrectionChest:2.3.1Alcance de la integración
BetterFoodBetterFood:1.5.1Alcance de la integración
MagmaCoreMagmaCore:2.2.0-SNAPSHOTConfiguració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:

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.1</version>
<scope>provided</scope>
</dependency>
</dependencies>

El equivalente en Gradle Kotlin DSL es:

build.gradle.kts sections
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:

plugin.yml section
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.