Sådan bruges NMS i Bukkit

Selvom Minecraft byder velkommen til forskellige plugins (som du kan bruge til at ændre din spiloplevelse), er nogle elementer i spillet beskyttet mod plugin-manipulation. Net. Minecraft. Server (NMS) er en af ​​disse beskyttede pakker, da den indeholder vital serverkode til spillet. Denne kode kommer direkte fra Minecrafts udviklere, Mojang, og formodes ikke at være tilgængelig for spillere.

Sådan bruges NMS i Bukkit

Med Bukkit kan spillere skabe et abstraktionslag omkring NMS-koden. Dette giver dem mulighed for at udvikle plug-ins, der interagerer med serverens kode uden at foretage direkte ændringer i kodebasen, der er afgørende for at spille spillet. Tænk på det som et vindue, der lader dig se på den kode, du vil bruge i dit plugin, men også fungerer som en barriere, der forhindrer dig i at ændre koden direkte.

Lad os undersøge, hvordan du bruger Bukkit med Minecrafts NMS.

Før du starter – hvad du behøver at vide om Bukkit

Bukkit er en API, der giver dig mulighed for at oprette og bruge plugins, der ændrer, hvordan du oplever multiplayer-aspektet af Minecraft. Det var det i hvert fald. Den sidste version af Bukkit udkom i 2016, og den er siden blevet afbrudt for at gøre plads til en anden API, ved navn Spigot. Mens den fungerer på samme måde som Bukkit, tilbyder den bedre serverydeevne.

Så brug af Bukkit til dine plugins kræver, at du både spiller en forældet version af Minecraft og accepterer det faktum, at Bukkit ikke er så godt som dets erstatnings-API. Hvis du antager, at du er glad for at acceptere disse ofre, er her de eneste ting, du har brug for:

  • Java Development Kit (JDK) 7 eller højere, hvor de fleste anbefaler JDK 8.

Med det er du klar til at oprette nogle plugins.

Sådan opretter du Bukkit-plugins til Minecraft

Før du kan begynde at bruge Bukkit til at få adgang til Minecrafts NMS, skal du tilføje API'en som en afhængighed, indstille en hovedklasse, der tillader Bukkit at interagere med det plugin, du opretter, og give Bukkit de oplysninger, det har brug for for at indlæse dit plugin i spillet. Hvert trin kræver kodning, hvor de eksempler, der følger, kommer fra RIP tutorial.

Trin 1 – Tilføj Bukkit som en afhængighed

Tidligere kunne du tilføje Bukkit som en afhængighed i Minecraft ved at downloade Bukkit.jar-filen fra Bukkit Repository og tilføje den til dit projekts klassesti. Denne mulighed er ikke længere tilgængelig, fordi depotet ikke længere er tilgængeligt.

Heldigvis er der en alternativ metode, der gør brug af dit spils pom.xml-fil. Åbn filen og tilføj følgende linjer:

spigot-repohttps://hub.spigotmc.org/nexus/content/repositories/snapshots/Bukkit APIorg.bukkitbukkit{VERSION}stillet til rådighed

Trin 2 – Opret dit plugins hovedklasse

Dit plugin skal være i stand til at oprette en enkelt instans af dets hovedklasse, som bruges til at udvide "JavaPlugin", så det genkender og giver dig mulighed for at bruge pluginnet, når du er i spillet. Tænk på denne hovedklasse som døren, hvorigennem Bukkit kan komme ind for både at indlæse og manipulere pluginnet. De fleste giver deres plugin's hovedklasse det samme navn som selve plugin'et, hvilket gør det nemmere at henvise til hovedklassen ved kodning.

Følgende eksempelkode fra RIP Tutorial tilbyder et eksempel på en hovedklasse for et plugin ved navn "MyPlugin:"

pakke com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName}; import org.bukkit.plugin.java. JavaPlugin; public final class MyPlugin udvider JavaPlugin { @Override public void onEnable() { //Kaldes, når plugin'et er aktiveret getLogger().info("onEnable er blevet aktiveret!"); } @Override public void onDisable() { //Kaldes, når plugin er deaktiveret getLogger().info("onDisable er blevet aktiveret!"); } }

Adgang til dit plugin fra en anden klasse

Du ønsker måske at få adgang til dit plugin via en anden klasse end den hovedklasse, du opretter til det, hvilket kan være nyttigt for at få adgang til flere plugins i et enkelt Minecraft-spil.

For at gøre det skal du først gemme en forekomst af hovedklassen, du oprettede ved hjælp af Bukkit, så andre klasser kan få adgang til den. Igen kommer følgende eksempelkode fra RIP Tutorial og bruger klassenavnet "MyPlugin":

public class MyPlugin udvider JavaPlugin { private static MyPlugin instance; //Faktisk endelig variabel, der indeholder dit plugin's instans public MyPlugin(){ if (MyPlugin.instance != null) {//Unødvendigt tjek, men sikrer, at dit plugin kun initialiseres én gang. throw new Error("Plugin allerede initialiseret!"); } MyPlugin.instance = dette; //Et plugins konstruktør bør kun kaldes én gang } public static MyPlugin getInstance(){ //Get's your plugin's instance return instans; } //din anden kode... }

Når du har instansen på plads, kan du få adgang til din hovedklasse (oprettet via Bukkit) ved hjælp af kommandoen "getInstance()". Her er et eksempel på det ved at bruge RIP Tutorials "MyPlugin" hovedklasse:

public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info("Vi har lige brugt MyPlugin"); } }

Trin 3 – Opret din plugin.yml-fil

En plugin.yml-fil indeholder vital information om dit plugin, hvilket betyder, at den fungerer som pluginets grundlæggende konfigurationsfil. Uden denne fil vil Bukkit ikke have den information, den skal bruge for at indlæse dit plugin i Minecraft, hvilket fører til, at plugin'et ikke kan indlæses, og spillet sandsynligvis går ned.

Denne fil skal indeholde følgende detaljer:

  • Navn – Dette er det navn, du har givet dit plugin (dvs. RIP Tutorials "MyPlugin"), og det vil blive vist i logmeddelelser og din plugin-liste.
  • Version – Brug dette felt til at angive pluginets versionshistorik, startende med 1.0.0 og gå op, mens du ændrer eller redigerer pluginnet.
  • Hoved – Indeholder navnet på pluginets hovedklasse, som udvider "JavaPlugin", hvilket tillader Bukkit at komme ind i pluginnet. I eksemplet RIP Tutorial ville dette navn være "pakke com.example.myplugin", som du kan se i hovedklassekoden ovenfor.
  • Beskrivelse – En grundlæggende beskrivelse af, hvad dit plugin gør.
  • Forfatter – Du kan have en enkelt forfatter eller flere forfattere, hvor sidstnævnte er angivet med firkantede parenteser og kommaer som følger – [Forfatter1, Forfatter2, Forfatter3].
  • Bidragydere – Du vil bruge denne sektion til at notere enhver, der har bidraget til dit plugin, med formateringen den samme som for sektionen "Forfattere".
  • Internet side – Hvis du har et websted at tilslutte, eller ønsker at linke folk til plugin's side eller GitHub-lager, kan du indtaste URL'en her.
  • API-version – Indtast den version af Bukkit API, du bruger her. Hvis du ikke indtaster en API-version, antager Minecraft, at den indlæser et ældre plugin. Pluginnet fungerer muligvis stadig, selvom du vil se en advarsel om, at det er en ældre version udskrevet i din konsol ved indlæsning.

Det følgende er et eksempel på en plugin.yml-fil baseret på de navnekonventioner, der bruges i RIP-vejledningskoden, der bruges i denne artikel:

navn: MyPlugin. version: 1.0.0. main: pakke com.example.myplugin. beskrivelse: Et test-plugin til Minecraft. forfatter: RIP Tutorial. internet side: https://riptutorial.com/bukkit. api-version: 1.17. 

Er Bukkit det rigtige til at få adgang til og bruge NMS?

Med det har du oprettet en Bukkit-afhængighed, bygget en hovedklasse til at fungere som Bukkits dør ind til plugin'et og har en plugin.yml-fil, som Bukkit kan bruge til at se, hvad plugin'et gør. Du vil dog måske ikke gøre det, da Bukkit er så forældet, at du bliver nødt til at køre en meget gammel version af Minecraft for at bruge den effektivt. De fleste er allerede gået videre til Sprigot, hvilket afspejler det meste af, hvad Bukkit gjorde, samtidig med at det tilbyder bedre ydeevne.

Hvis du stadig ønsker at bruge Bukkit til at få adgang til plugins, hvorfor valgte du det frem for mere moderne API'er? Hvilken slags plugins bruger du til at forbedre din Minecraft-oplevelse? Fortæl os alt om det i kommentarfeltet nedenfor.