API Java dos plugins
A referência Java gerada permite pesquisar classes, métodos e assinaturas, com a versão e o commit do código registados para cada módulo.
Use esta secção para escrever um plugin Java que se integre com os plugins Nightbreak. Para criar mecânicas de jogo sem um plugin Java, comece pelo guia de scripts Lua.
Escolher um plugin
Todas as coordenadas abaixo usam o grupo com.magmaguy. Estas versões constam do repositório Maven público no momento desta atualização. Escolha a versão correspondente ao plugin instalado no servidor. As páginas baseadas no código atual e as referências geradas podem abranger uma compilação mais recente antes de o respetivo artefacto Maven ser publicado.
| Plugin | Artefacto e versão | Referência para programadores |
|---|---|---|
| EliteMobs | EliteMobs:10.9.1 | Entidades, itens, eventos e serviços de poderes Lua |
| FreeMinecraftModels | FreeMinecraftModels:2.12.1 | Modelos, interações, disfarces, itens e armas mágicas |
| ResourcePackManager | ResourcePackManager:2.4.1 | Registo e recarregamento de pacotes |
| BetterStructures | BetterStructures:2.7.2 | Eventos de geração de estruturas |
| EternalTD | EternalTD:1.7.3 | Eventos de torres, vagas e combate |
| CannonRTP | CannonRTP:1.2.2 | Eventos de lançamento, validação do destino e aterragem |
| ResurrectionChest | ResurrectionChest:2.3.1 | Âmbito da integração |
| BetterFood | BetterFood:1.5.1 | Âmbito da integração |
| MagmaCore | MagmaCore:2.2.0-SNAPSHOT | Configuração e ciclo de vida da biblioteca incorporada |
Adicionar a dependência de um plugin
Os plugins publicados estão disponíveis no repositório Maven do MagmaGuy. Compile contra o plugin instalado usando provided no Maven ou compileOnly no Gradle. O JAR da integração não deve incluir uma segunda cópia desse plugin.
Por exemplo, uma integração com o EliteMobs utiliza:
<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>
O equivalente em Gradle Kotlin DSL é:
repositories {
maven("https://repo.magmaguy.com/releases")
}
dependencies {
compileOnly("com.magmaguy:EliteMobs:10.9.1")
}
O projeto também precisa da sua dependência habitual da API Bukkit/Paper. Use Java 21 nestes exemplos e execute o servidor com a versão de Java que este exige.
Declare a dependência de execução no descritor do plugin:
depend: [EliteMobs]
Para outra integração, substitua o artefacto, a versão e o nome do plugin. O BetterStructures também exige WorldEdit no servidor. A API Java de registo do ResourcePackManager corre no servidor Bukkit. O artefacto universal também contém componentes para proxies, mas isso não torna esta API Bukkit acessível a um plugin de proxy.
Se a integração for opcional, use softdepend e carregue as classes da integração apenas depois de verificar que o plugin de destino está ativo. Evite referências a tipos opcionais no ponto de entrada que é sempre carregado. A ordem das dependências não garante que a inicialização assíncrona do conteúdo tenha terminado. Respeite os eventos de preparação e recarregamento do plugin de destino.
O MagmaCore tem regras de empacotamento diferentes. É uma biblioteca incorporada. Siga o seu guia de shading e ciclo de vida em vez destas instruções para plugins instalados.
Ciclo de vida e compatibilidade
Use os pontos de entrada documentados em cada guia. Uma classe Java pública num JAR de plugin pode continuar a ser um detalhe de implementação. Verifique as assinaturas da versão correspondente antes de atualizar, sobretudo se usar gestores ou classes de entidades fora de um pacote api.
Execute operações sobre entidades e mundos Bukkit na thread do servidor. Evite bloquear os handlers de eventos com HTTP, acesso a ficheiros ou cálculos demorados. Ao regressar de trabalho assíncrono, volte a verificar as entidades e o estado de preparação do plugin.
Guarde apenas o estado que pertence à integração. Ao desativá-la, liberte os modelos associados, registos e tarefas que criou. Após um recarregamento, obtenha novamente os objetos do plugin de destino. Uma referência guardada para um modelo ou uma masmorra não prova que ainda exista em execução.
ResurrectionChest
O ResurrectionChest 2.3.1 não tem uma API dedicada de eventos Bukkit personalizados nem uma fachada de integração. O pacote events contém listeners Bukkit internos. Não os instancie como pontos de extensão.
Use a configuração e os comandos documentados para configurar o servidor. O artefacto Maven publicado permite compilar uma integração contra essa versão, mas não estabelece uma API estável de gestão de baús.
BetterFood
O BetterFood 1.5.1 não tem uma API dedicada de eventos Bukkit personalizados nem uma fachada de integração. A seleção de alimentos é executada pelos seus próprios listeners Bukkit.
Consulte o guia de comportamento e a referência de configuração para as opções suportadas. O código que escuta eventos Bukkit normais deve respeitar o cancelamento e a prioridade dos eventos, em vez de chamar diretamente os listeners internos do BetterFood.
Documentação de classes e métodos
Use os guias acima para padrões de integração e a referência Java gerada para classes, métodos e assinaturas. Compare a versão e o commit do código registados nessa referência com a versão utilizada pela integração.