Como usar o NMS no Bukkit

Embora o Minecraft aceite vários plug-ins (que você pode usar para alterar sua experiência de jogo), alguns elementos do jogo são protegidos contra a manipulação de plug-ins. Net.Minecraft.Server (NMS) é um desses pacotes protegidos, pois contém código de servidor vital para o jogo. Este código vem diretamente dos desenvolvedores do Minecraft, Mojang, e não deve ser acessível aos jogadores.

Com o Bukkit, os jogadores podem criar uma camada de abstração em torno do código NMS. Isso permite que eles desenvolvam plug-ins que interagem com o código do servidor sem fazer alterações diretas na base de código essencial para o jogo. Pense nisso como uma janela que permite ver o código que deseja usar em seu plug-in, mas também atua como uma barreira que impede que você altere o código diretamente.

Vamos explorar como usar o Bukkit com o Minecraft NMS.

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

O Bukkit é uma API que permite para criar e usar plug-ins que alteram a forma como você experimenta o aspecto multijogador 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. Embora funcione de maneira semelhante ao Bukkit, ele oferece melhor desempenho do servidor.

Portanto, usar o Bukkit para seus plug-ins exige que você jogue uma versão desatualizada do Minecraft e aceite o fato de que o Bukkit não é tão bom quanto seu substituto API. 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 JDK 8.

Com isso, você está pronto para criar alguns plug-ins.

Como criar plug-ins Bukkit para Minecraft

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

Etapa 1 – Adicionar Bukkit como uma dependência

No passado, você poderia adicionar Bukkit como uma dependência no Minecraft baixando o arquivo Bukkit.jar do Repositório Bukkit e adicionando-o 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, existe um método alternativo que usa o arquivo pom.xml do seu jogo. Abra o arquivo e adicione as seguintes linhas:

spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ org.bukkit bukkit {VERSION } fornecido

Etapa 2 – Crie a classe principal do seu plug-in

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 a classe principal do plug-in. A maioria dá à classe principal do plug-in o mesmo nome do próprio plug-in, facilitando a referência à classe principal ao codificar.

O seguinte código de exemplo do Tutorial RIP oferece um exemplo de classe principal para um plugin chamado “MyPlugin:”

package com.example.myplugin;//{$TopLevelDomain}.{$Domain}.{$PluginName}; import org.bukkit.plugin.java.JavaPlugin; public final class MyPlugin extends JavaPlugin { @Override public void onEnable() {//Chamado quando o plug-in está ativado getLogger().info(“onEnable foi invocado!”); } @Override public void onDisable() {//Chamado quando o plug-in está desativado getLogger().info(“onDisable foi invocado!”); } }

Acessando seu plug-in de outra classe

Você pode desejar acessar seu plug-in por meio de uma classe diferente da classe principal que você criou para ele, o que pode ser útil para acessar vários plug-ins em um único Minecraft game.

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á-la. Novamente, o código de exemplo a seguir vem do Tutorial RIP e usa o nome de classe “MyPlugin”:

public class MyPlugin extends JavaPlugin { private static MyPlugin instance;//Efetivamente variável final contendo a instância do seu plug-in public MyPlugin(){ if( MyPlugin.instance !=null) {//Verificação desnecessária, mas garante que seu plug-in seja inicializado apenas uma vez. throw new Error(“Plugin já inicializado!”); } MyPlugin.instance=this;//O construtor de um plug-in deve ser chamado apenas uma vez } public static MyPlugin getInstance(){//Obtém a instância de retorno do seu plug-in; }//seu outro código… }

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

public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info(“Acabamos de usar MyPlugin”); } }

Etapa 3 – Crie seu arquivo plugin.yml

Um arquivo plugin.yml contém informações vitais sobre seu plugin, o que significa que serve como arquivo de configuração básica do plugin. Sem este arquivo, o Bukkit não terá as informações de que ele precisa para carregar seu plug-in no Minecraft, fazendo com que o plug-in não seja carregado e o jogo provavelmente trave.

Este arquivo deve conter os seguintes detalhes:

Nome – Este é o nome que você deu ao seu plug-in (ou seja, “MyPlugin” do Tutorial RIP) e ele será exibido nas mensagens de log e na lista de plug-ins.Versão – Use este campo para denotar o histórico da versão do plug-in, começando com 1.0.0 e subindo conforme você altera ou edita o plug-in.Main – 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 RIP, este nome seria “package com.example.myplugin,”que você pode ver no código da classe principal acima.Descrição – Uma descrição básica do que seu plugin faz.Autor – Você pode ter um único autor ou vários autores, sendo o último indicado entre colchetes e vírgulas como segue – [Autor1, Autor2, Autor3].Contribuintes – Você vai use esta seção para anotar qualquer pessoa que contribuiu para o seu plug-in, com a formatação sendo a mesma da seção”Autores”.Site – Se você tem um site para conectar ou deseja vincular pessoas ao página do plug-in ou repositório GitHub, você pode inserir a URL aqui.Versão da API – Insira a versão da API do Bukkit que você usa aqui. Se você não inserir uma versão da API, o Minecraft assumirá que está carregando um plug-in herdado. O plug-in ainda pode funcionar, embora você veja um aviso sobre ele ser uma versão herdada impresso em seu console após o carregamento.

O seguinte é um exemplo de um arquivo plugin.yml baseado nas convenções de nomenclatura usadas no Tutorial RIP código usado neste artigo:

nome: MyPlugin versão: 1.0.0 principal: pacote com.example.myplugin descrição: Um plugin de teste para Minecraft autor: RIP Tutorial website: https://riptutorial.com/bukkit api-versão: 1.17

O Bukkit é adequado para acessar e usar o NMS?

Com isso, você criou uma dependência do Bukkit, construiu uma classe principal para servir como porta do Bukkit para o plug-in e tem um plug-in.yml que o Bukkit pode usar para ver o que o plugin faz. No entanto, você pode não querer fazer isso, pois o Bukkit está tão desatualizado que você precisará executar uma versão muito antiga do Minecraft para usá-lo com eficiência. A maioria já mudou para o Sprigot, que reflete a maior parte do que o Bukkit fez enquanto oferece melhor desempenho.

Se você ainda deseja usar o Bukkit para acessar plug-ins, por que o escolheu antes das APIs mais modernas? Que tipos de plug-ins você usa para aprimorar sua experiência no Minecraft? Conte-nos tudo na seção de comentários abaixo.

Isenção de responsabilidade: algumas páginas deste site podem incluir um link de afiliado. Isso não afeta nosso editorial de forma alguma.

Enviar para alguém

Dispositivo ausente

Categories: IT Info