Como usar o NMS em Bukkit

Como usar o NMS em Bukkit

Embora o Minecraft seja acolhedor para vários plugins (que você pode usar para alterar sua experiência de jogabilidade), alguns elementos do jogo são protegidos da manipulação do plug -in. Líquido.Minecraft.Servidor (NMS) é um desses pacotes protegidos, pois contém código de servidor vital para o jogo. Este código vem diretamente dos desenvolvedores da Minecraft, Mojang, e não é acessível aos jogadores.

Com o Bukkit, os jogadores podem criar uma camada de abstração ao redor do código NMS. Isso lhes permite desenvolver plug-ins que interagem com o código do servidor sem fazer alterações diretas na base de código essencial para jogar o jogo. Pense nisso como uma janela que permite olhar para o código que deseja usar no seu plugin, mas também age como uma barreira que impede que você altere o código diretamente.

Vamos explorar como usar o Bukkit com o NMS do Minecraft.

Antes de começar - o que você precisa saber sobre Bukkit

Bukkit é uma API que permite criar e usar plugins que alteram como você experimenta o aspecto multiplayer do Minecraft. Pelo menos, foi. A última versão do Bukkit foi lançada em 2016, e desde então foi descontinuada para dar lugar a uma API diferente, chamada Spigot. Enquanto trabalha de maneira semelhante ao Bukkit, oferece melhor desempenho do servidor.

Portanto, usar o Bukkit para seus plugins exige que você jogue uma versão desatualizada do Minecraft e aceite o fato de que o Bukkit não é tão bom quanto sua API de substituição. Supondo que você esteja feliz em aceitar esses sacrifícios, aqui estão as únicas coisas que você precisa:

  • Java Development Kit (JDK) 7 ou superior, com a maioria recomendando o JDK 8.

Com isso, você está pronto para criar alguns plugins.

Como criar plugins Bukkit para Minecraft

Antes de começar a usar o Bukkit para acessar o NMS da Minecraft, você precisa adicionar a API como dependência, definir uma classe principal que permita que o Bukkit interaja com o plug -in que você cria e fornecer ao Bukkit as informações necessárias para carregar seu plug -in no plug -in no jogo. Cada etapa requer codificação, com os exemplos a seguir do tutorial RIP.

Etapa 1 - Adicione Bukkit como uma dependência

No passado, você poderia adicionar Bukkit como uma dependência no Minecraft, baixando o Bukkit.JAR FILE do Bukkit Repository e adicioná -lo ao caminho de classe do seu projeto. Essa opção não está mais disponível porque o repositório não está mais acessível.

Felizmente, há um método alternativo que utiliza o pom do seu jogo.Arquivo XML. Abra o arquivo e adicione as seguintes linhas:

  Spigot-Repo https: // hub.Spigotmc.org/nexus/content/repositórios/instantâneos/      org.Bukkit Bukkit VERSÃO oferecido   

Etapa 2 - Crie a classe principal do seu plugin

Seu plug-in precisa ser capaz de criar uma única instância de sua classe principal, que é usada para estender "javaplugin", para que ele reconheça e permita que você use o plug-in quando estiver no jogo. Pense nessa classe principal como a porta pela qual o Bukkit pode entrar para carregar e manipular o plug -in. A maioria dá a classe principal do plugin o mesmo nome do próprio plug -in, facilitando a referência à classe principal ao codificar.

O código de exemplo a seguir do RIP Tutorial oferece um exemplo de uma classe principal para um plug -in chamado "MyPlugin:"

pacote com.exemplo.myplugin; // $ TopleVenDomain.$ Domain.$ PluginName; importação org.Bukkit.plugar.Java.Javaplugin; A classe final pública myplugin estende Javaplugin @Override public void oNEnable () // chamado quando o plug -in estiver ativado getLogger ().Info ("OnEnable foi invocado!"); @Override public void ondisable () // chamado quando o plug -in é desativado getLogger ().info ("ondisable foi invocado!"); 

Acessando seu plugin de outra classe

Você pode acessar seu plug -in por meio de uma classe diferente da classe principal que você cria para ela, o que pode ser útil para acessar vários plugins em um único jogo do Minecraft.

Para fazer isso, você precisa primeiro armazenar uma instância da classe principal que você criou usando o Bukkit para que outras classes possam acessá -lo. Novamente, o código de exemplo a seguir vem do tutorial do RIP e usa o nome da classe “myplugin”:

classe pública myplugin estende Javaplugin Instância privada de myplugin estática privada; // Variável efetivamente final contendo a instância do seu plug -in public myplugin () if (myplugin.instância != null) // verificação desnecessária, mas garante que seu plugin seja inicializado apenas uma vez. lançar um novo erro ("plugin já inicializado!"); Myplugin.instância = this; // o construtor de um plugin deve ser chamado apenas uma vez public static myplugin getInstance () // Get's Your Plugin Instância de retorno da instância;  // seu outro código… 

Depois de ter a instância no lugar, você pode acessar sua classe principal (criada via Bukkit) usando o comando "getInstance ()". Aqui está um exemplo disso usando a classe principal "MyPlugin" do RIP Tutorial:

public class Myotherclass public void DosomethingWithMAinClass () MyPlugin.getInstance ().getLogger ().info ("nós apenas usamos myplugin");  

Etapa 3 - Crie seu plugin.Arquivo YML

Um plugin.O arquivo YML contém informações vitais sobre o seu plug -in, o que significa que serve como o arquivo de configuração básica do plug -in. Sem esse arquivo, o Bukkit não terá as informações necessárias para carregar seu plug -in no Minecraft, levando ao plug -in que não carregue e o jogo provavelmente trava.

Este arquivo deve conter os seguintes detalhes:

  • Nome - Este é o nome que você deu ao seu plugin (eu.e., "MyPlugin" do RIP Tutorial) e ele será exibido nas mensagens de log e na sua lista de plug -in.
  • Versão - Use este campo para denotar o histórico da versão do plug -in, começando com 1.0.0 e subindo enquanto você altera ou edita o plugin.
  • Principal - Contém o nome da classe principal do plug -in, que estende "Javaplugin", permitindo que o Bukkit entre no plug -in. No exemplo do tutorial do RIP, esse nome seria “pacote com.exemplo.myplugin ”, que você pode ver no código de classe principal acima.
  • Descrição - Uma descrição básica do que seu plugin faz.
  • Autor - Você pode ter um único autor ou múltiplos autores, com este último sendo indicado com colchetes e vírgulas da seguinte forma - [Author1, Author2, Author3].
  • Colaboradores - Você usará esta seção para observar qualquer pessoa que contribuiu para o seu plug -in, com a formatação sendo a mesma da seção "Autores".
  • Local na rede Internet - Se você tem um site para conectar ou desejar vincular as pessoas à página do plug -in ou repositório do GitHub, você pode entrar no URL aqui.
  • Versão API - Digite a versão da API Bukkit que você usa aqui. Se você não inserir uma versão da API, o Minecraft assumirá que está carregando um plugin legado. O plug -in ainda pode funcionar, embora você veja um aviso sobre ser uma versão herdada impressa em seu console ao carregar.

A seguir é um exemplo de um plugin.Arquivo YML com base nas convenções de nomenclatura usadas no código do tutorial RIP usado neste artigo:

Nome: Myplugin Versão: 1.0.0 Main: pacote com.exemplo.MyPlugin Descrição: Um plugin de teste para Minecraft Author: RIP Tutorial Site: https: // riptUtorial.Com/Bukkit API-Versão: 1.17 

Bukkit é certo para acessar e usar NMS?

Com isso, você criou uma dependência do Bukkit, construiu uma classe principal para servir como porta de Bukkit no plug -in e ter um plug -in.Arquivo YML que o Bukkit pode usar para ver o que o plug -in faz. No entanto, você pode não querer fazê -lo, pois o Bukkit está tão desatualizado que você precisará executar uma versão muito antiga do Minecraft para usá -lo efetivamente. A maioria já passou para o sprigot, que reflete a maior parte do que Bukkit fez ao oferecer melhor desempenho.

Se você ainda deseja usar o Bukkit para acessar plugins, por que você o escolheu à frente de APIs mais modernas? Que tipo de plugins você usa para aprimorar sua experiência no Minecraft? Conte -nos tudo sobre isso na seção de comentários abaixo.