Come usare NMS in Bukkit

Sebbene Minecraft dia il benvenuto a vari plug-in (che puoi utilizzare per modificare la tua esperienza di gioco), alcuni elementi del gioco sono protetti dalla manipolazione dei plug-in. Netto. Minecraft. Server (NMS) è uno di questi pacchetti protetti, in quanto contiene un codice server vitale per il gioco. Questo codice proviene direttamente dagli sviluppatori di Minecraft, Mojang, e non dovrebbe essere accessibile ai giocatori.

Come usare NMS in Bukkit

Con Bukkit, i giocatori possono creare uno strato di astrazione attorno al codice NMS. Ciò consente loro di sviluppare plug-in che interagiscono con il codice del server senza apportare modifiche dirette alla base di codice che è essenziale per giocare. Pensala come una finestra che ti consente di guardare il codice che desideri utilizzare nel tuo plug-in, ma funge anche da barriera che ti impedisce di modificare direttamente il codice.

Esploriamo come utilizzare Bukkit con NMS di Minecraft.

Prima di iniziare: cosa devi sapere su Bukkit

Bukkit è un'API che ti consente di creare e utilizzare plug-in che modificano il modo in cui vivi l'aspetto multiplayer di Minecraft. Almeno lo era. L'ultima versione di Bukkit è uscita nel 2016 e da allora è stata interrotta per far posto a un'API diversa, chiamata Spigot. Pur funzionando in modo simile a Bukkit, offre migliori prestazioni del server.

Quindi, l'utilizzo di Bukkit per i tuoi plug-in richiede sia di riprodurre una versione obsoleta di Minecraft sia di accettare il fatto che Bukkit non è buono come la sua API sostitutiva. Supponendo che tu sia felice di accettare quei sacrifici, ecco le uniche cose di cui hai bisogno:

  • Java Development Kit (JDK) 7 o versioni successive, con la maggior parte di JDK 8 consigliati.

Con ciò, sei pronto per creare alcuni plugin.

Come creare plugin Bukkit per Minecraft

Prima di poter iniziare a utilizzare Bukkit per accedere all'NMS di Minecraft, devi aggiungere l'API come dipendenza, impostare una classe principale che consente a Bukkit di interagire con il plug-in creato e di fornire a Bukkit le informazioni di cui ha bisogno per caricare il plug-in il gioco. Ogni passaggio richiede la codifica, con gli esempi che seguono provenienti da Esercitazione RIP.

Passaggio 1: aggiungi Bukkit come dipendenza

In passato, potevi aggiungere Bukkit come dipendenza in Minecraft scaricando il file Bukkit.jar dal repository Bukkit e aggiungendolo al classpath del tuo progetto. Questa opzione non è più disponibile perché il Repository non è più accessibile.

Per fortuna, esiste un metodo alternativo che utilizza il file pom.xml del tuo gioco. Apri il file e aggiungi le seguenti righe:

rubinetto-repohttps://hub.spigotmc.org/nexus/content/repositories/snapshots/Bukkit APIorg.bukkitbukkit{VERSIONE}fornito

Passaggio 2: crea la classe principale del tuo plug-in

Il tuo plug-in deve essere in grado di creare una singola istanza della sua classe principale, che viene utilizzata per estendere "JavaPlugin" in modo che riconosca e ti consenta di utilizzare il plug-in quando sei in gioco. Pensa a questa classe principale come alla porta attraverso la quale Bukkit può entrare sia per caricare che per manipolare il plugin. La maggior parte assegna alla classe principale del proprio plugin lo stesso nome del plugin stesso, facilitando il riferimento alla classe principale durante la codifica.

Il seguente codice di esempio da RIP Tutorial offre un esempio di una classe principale per un plug-in denominato "MyPlugin:"

pacchetto com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName}; importare org.bukkit.plugin.java. JavaPlugin; public final class MyPlugin extends JavaPlugin { @Override public void onEnable() { //Chiamato quando il plugin è abilitato getLogger().info("onEnable è stato invocato!"); } @Override public void onDisable() { //Chiamato quando il plugin è disabilitato getLogger().info("onDisable è stato invocato!"); } }

Accesso al tuo plugin da un'altra classe

Potresti voler accedere al tuo plug-in tramite una classe diversa rispetto alla classe principale che crei per esso, il che potrebbe essere utile per accedere a diversi plug-in in un singolo gioco Minecraft.

Per fare ciò, devi prima memorizzare un'istanza della classe principale che hai creato usando Bukkit in modo che altre classi possano accedervi. Ancora una volta, il seguente codice di esempio proviene da RIP Tutorial e utilizza il nome della classe "MyPlugin":

public class MyPlugin extends JavaPlugin { private static MyPlugin instance; //Variabile finale contenente l'istanza del tuo plugin public MyPlugin(){ if (MyPlugin.instance != null) { //Controllo non necessario ma assicura che il tuo plugin sia inizializzato solo una volta. throw new Error("Plugin già inizializzato!"); } MyPlugin.instance = this; //Il costruttore di un plugin dovrebbe essere chiamato solo una volta } public static MyPlugin getInstance(){ //Ottiene l'istanza di ritorno dell'istanza del tuo plugin; } //l'altro tuo codice... }

Una volta che hai l'istanza in atto, puoi accedere alla tua classe principale (creata tramite Bukkit) usando il comando "getInstance()". Ecco un esempio di ciò utilizzando la classe principale "MyPlugin" di RIP Tutorial:

public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info("Abbiamo appena usato MyPlugin"); } }

Passaggio 3: crea il tuo file plugin.yml

Un file plugin.yml contiene informazioni vitali sul tuo plugin, il che significa che funge da file di configurazione di base del plugin. Senza questo file, Bukkit non avrà le informazioni necessarie per caricare il plug-in in Minecraft, causando il mancato caricamento del plug-in e il probabile arresto anomalo del gioco.

Questo file dovrebbe contenere i seguenti dettagli:

  • Nome – Questo è il nome che hai dato al tuo plug-in (ad esempio, "MyPlugin" di RIP Tutorial) e verrà visualizzato nei messaggi di registro e nell'elenco dei plug-in.
  • Versione – Utilizza questo campo per indicare la cronologia delle versioni del plug-in, a partire da 1.0.0 e salendo man mano che modifichi o modifichi il plug-in.
  • Principale – Contiene il nome della classe principale del plugin, che estende “JavaPlugin”, permettendo a Bukkit di entrare nel plugin. Nell'esempio del tutorial RIP, questo nome sarebbe "package com.example.myplugin", che puoi vedere nel codice della classe principale sopra.
  • Descrizione – Una descrizione di base di ciò che fa il tuo plugin.
  • Autore – È possibile avere un solo autore o più autori, quest'ultimo indicato con parentesi quadre e virgole come segue – [Autore1, Autore2, Autore3].
  • Contributori – Utilizzerai questa sezione per annotare chiunque abbia contribuito al tuo plugin, con la formattazione uguale a quella della sezione "Autori".
  • Sito web – Se si dispone di un sito Web da collegare o si desidera collegare le persone alla pagina del plug-in o al repository GitHub, è possibile inserire l'URL qui.
  • Versione API – Inserisci qui la versione dell'API Bukkit che utilizzi. Se non inserisci una versione dell'API, Minecraft presumerà che stia caricando un plug-in legacy. Il plug-in potrebbe ancora funzionare, anche se al caricamento verrà visualizzato un avviso che indica che si tratta di una versione legacy stampata nella console.

Di seguito è riportato un esempio di un file plugin.yml basato sulle convenzioni di denominazione utilizzate nel codice RIP Tutorial utilizzato in questo articolo:

nome: MyPlugin. versione: 1.0.0. main: pacchetto com.example.myplugin. descrizione: Un plugin di prova per Minecraft. autore: Tutorial RIP. sito web: https://riptutorial.com/bukkit. versione API: 1.17. 

Bukkit è adatto per l'accesso e l'utilizzo di NMS?

Con ciò, hai creato una dipendenza Bukkit, costruito una classe principale che funge da porta di Bukkit nel plug-in e hai un file plugin.yml che Bukkit può utilizzare per vedere cosa fa il plug-in. Tuttavia, potresti non volerlo fare, poiché Bukkit è così obsoleto che dovrai eseguire una versione molto vecchia di Minecraft per usarlo in modo efficace. La maggior parte è già passata a Sprigot, che rispecchia la maggior parte di ciò che ha fatto Bukkit offrendo prestazioni migliori.

Se desideri ancora utilizzare Bukkit per accedere ai plug-in, perché l'hai scelto prima delle API più moderne? Che tipo di plugin usi per migliorare la tua esperienza su Minecraft? Raccontaci tutto nella sezione commenti qui sotto.