Hvordan bruke NMS i Bukkit

Hvordan bruke NMS i Bukkit

Selv om Minecraft er imøtekommende for forskjellige plugins (som du kan bruke for å endre spillopplevelsen din) er noen elementer i spillet skjermet for plugin manipulasjon. Nett.Minecraft.Server (NMS) er en av disse beskyttede pakkene, ettersom den inneholder viktig serverkode for spillet. Denne koden kommer direkte fra Minecrafts utviklere, Mojang, og er ikke ment å være tilgjengelig for spillere.

Med Bukkit kan spillerne opprette et abstraksjonslag rundt NMS -koden. Dette lar dem utvikle plugins som samhandler med serverens kode uten å gjøre direkte endringer i kodebasen som er viktig for å spille spillet. Tenk på det som et vindu som lar deg se på koden du vil bruke i plugin -en din, men også fungerer som en barriere som forhindrer deg i å endre koden direkte.

La oss utforske hvordan du bruker Bukkit med Minecrafts NMS.

Før du begynner - hva du trenger å vite om Bukkit

Bukkit er et API som lar deg lage og bruke plugins som endrer hvordan du opplever flerspilleraspektet ved Minecraft. I det minste var det. Den siste versjonen av Bukkit kom ut i 2016, og den har siden blitt avviklet for å gjøre plass for et annet API, kalt Spigot. Mens du jobber på samme måte som Bukkit, tilbyr det bedre serverytelse.

Så ved å bruke Bukkit for pluginsene dine krever at du både spiller en utdatert versjon av Minecraft og godta det faktum at Bukkit ikke er så bra som erstatnings -API. Forutsatt at du er glad for å godta disse ofrene, her er det eneste du trenger:

  • Java Development Kit (JDK) 7 eller høyere, med de fleste som anbefaler JDK 8.

Med det er du klar til å lage noen plugins.

Hvordan lage Bukkit -plugins for Minecraft

Før du kan begynne å bruke Bukkit for å få tilgang til Minecrafts NMS, må du legge til API som en avhengighet, angi en hovedklasse som lar Bukkit samhandle med pluginen du oppretter, og gi Bukkit den informasjonen den trenger for å laste inn plugin -en din i den spill. Hvert trinn krever koding, med eksemplene som følger fra RIP -opplæringen.

Trinn 1 - Legg til Bukkit som en avhengighet

Tidligere kan du legge til Bukkit som en avhengighet i Minecraft ved å laste ned Bukkit.JAR -fil fra Bukkit Repository og legge den til i prosjektets klassesti. Det alternativet er ikke tilgjengelig lenger fordi depotet ikke lenger er tilgjengelig.

Heldigvis er det en alternativ metode som benytter seg av spillets POM.XML -fil. Åpne filen og legg til følgende linjer:

  Spigot-Repo https: // hub.Spigotmc.org/nexus/innhold/depoter/øyeblikksbilder/      org.Bukkit Bukkit VERSJON sørget for   

Trinn 2 - Lag pluginens hovedklasse

Pluginen din må kunne lage en enkelt forekomst av hovedklassen, som brukes til å utvide "Javaplugin" slik at den gjenkjenner og lar deg bruke plugin når du er i spillet. Tenk på denne hovedklassen som døren som Bukkit kan komme inn for både å laste og manipulere plugin. De fleste gir plugins hovedklasse samme navn som selve pluginen, noe som gjør det lettere å referere til hovedklassen når du koder.

Følgende eksempelkode fra RIP -opplæringen tilbyr et eksempel på en hovedklasse for en plugin som heter "MyPlugin:"

pakke com.eksempel.Myplugin; // $ topLeveldomain.$ Domene.$ PluginName; Import org.Bukkit.plugg inn.Java.Javaplugin; Offentlig finalklasse MyPlugin utvider Javaplugin @Override public void onEnable () // Kalles når pluginen er aktivert GetLogger ().Info ("ONEnable har blitt påkalt!"); @Override public void ondisable () // Kalt når pluginen er deaktivert getLogger ().Info ("Ondisable er blitt påkalt!"); 

Få tilgang til plugin fra en annen klasse

Det kan være lurt å få tilgang til pluginen din via en annen klasse enn hovedklassen du lager for den, noe som kan være nyttig for å få tilgang til flere plugins i et enkelt Minecraft -spill.

For å gjøre det, må du først lagre en forekomst av hovedklassen du opprettet ved hjelp av Bukkit slik at andre klasser kan få tilgang til den. Igjen kommer følgende eksempelkode fra RIP -opplæring og bruker "MyPlugin" -klassenavnet:

offentlig klasse MyPlugin utvider Javaplugin privat statisk MyPlugin -forekomst; // Effektiv endelig variabel som inneholder din plugin's forekomst offentlig myPlugin () if (myplugin.forekomst != null) // unødvendig sjekk, men sikrer at plugin -en din bare initialiseres en gang. Kast ny feil ("Plugin allerede initialisert!"); Myplugin.forekomst = dette; // En plugin -konstruktør skal bare kalles en gang offentlig statisk myPlugin getInstance () // get's your plugin's constance return forekomst;  // den andre koden din ... 

Når du har forekomsten på plass, kan du få tilgang til hovedklassen din (opprettet via Bukkit) ved å bruke kommandoen “GetInstance ()”. Her er et eksempel på at ved å bruke RIP -opplæringen “MyPlugin” hovedklasse:

public class myotherclass public void doSomethingWithMainClass () MyPlugin.GetInstance ().getLogger ().info ("vi brukte nettopp myplugin");  

Trinn 3 - Lag plugin.YML -fil

En plugin.YML -filen inneholder viktig informasjon om plugin -en din, noe som betyr at den fungerer som pluginens grunnleggende konfigurasjonsfil. Uten denne filen vil ikke Bukkit ha den informasjonen den trenger for å laste inn plugin -en din i Minecraft, noe som fører til at pluginen ikke klarer å laste og spillet sannsynligvis krasjer.

Denne filen skal inneholde følgende detaljer:

  • Navn - Dette er navnet du har gitt til plugin -en din (i.e., RIP Tutorials "MyPlugin") og den vises i loggmeldinger og plugin -listen din.
  • Versjon - Bruk dette feltet til å betegne plugin -versjonens historie, og starter med 1.0.0 og gå opp når du endrer eller redigerer plugin.
  • Hoved - Inneholder navnet på pluginens hovedklasse, som utvider “Javaplugin”, slik at Bukkit kan komme inn i plugin -en. I RIP -veiledningseksemplet vil dette navnet være "Package com.eksempel.myplugin, ”som du kan se i hovedklassekoden over.
  • Beskrivelse - En grunnleggende beskrivelse av hva pluginen din gjør.
  • Forfatter - Du kan ha en enkelt forfatter eller flere forfattere, hvor sistnevnte blir betegnet med firkantede parenteser og komma som følger - [Forfatter1, forfatter2, forfatter3].
  • Bidragsytere - Du bruker denne delen til å merke alle som bidro til plugin -en din, med formateringen som den samme som for "Forfatter" -delen.
  • Nettsted - Hvis du har et nettsted for å plugge, eller ønsker å koble folk til plugin -siden eller GitHub -depotet, kan du oppgi URL -en her.
  • Api-versjon - Skriv inn versjonen av Bukkit API som du bruker her. Hvis du ikke skriver inn en API -versjon, vil Minecraft anta at den laster en arv -plugin. Pluginen kan fremdeles fungere, selv om du vil se en advarsel om at det er en arv versjon trykt i konsollen din ved lasting.

Følgende er et eksempel på en plugin.YML -fil basert på navnekonvensjonene som ble brukt i RIP -veiledningskoden som ble brukt i denne artikkelen:

Navn: Myplugin versjon: 1.0.0 Hoved: Pakke com.eksempel.MyPlugin Beskrivelse: En testplugin for Minecraft Forfatter: RIP -opplæringsnettsted: https: // riptutorial.com/bukkit api-versjon: 1.17 

Er bukkit riktig for tilgang til og bruker NMS?

Med det har du laget en Bukkit -avhengighet, bygget en hovedklasse for å tjene som Bukkits dør inn i plugin -en, og ha en plugin.YML -fil som Bukkit kan bruke for å se hva pluginen gjør. Imidlertid vil du kanskje ikke gjøre det, da Bukkit er så utdatert at du trenger å kjøre en veldig gammel versjon av Minecraft for å bruke den effektivt. De fleste har allerede gått videre til Sprigot, som speiler det meste av det Bukkit gjorde mens de tilbyr bedre ytelse.

Hvis du fremdeles vil bruke Bukkit for å få tilgang til plugins, hvorfor valgte du det foran mer moderne API -er? Hva slags plugins bruker du for å forbedre mincraftopplevelsen? Fortell oss alt om det i kommentarfeltet nedenfor.