Kaip naudoti NMS Bukkit

Nors „Minecraft“ sveikina įvairius papildinius (kuriuos galite naudoti norėdami pakeisti žaidimo patirtį), kai kurie žaidimo elementai yra apsaugoti nuo manipuliavimo papildiniais. Grynasis. Minecraft. Serveris (NMS) yra vienas iš šių apsaugotų paketų, nes jame yra žaidimui svarbus serverio kodas. Šis kodas gaunamas tiesiogiai iš „Minecraft“ kūrėjų „Mojang“ ir neturėtų būti pasiekiamas žaidėjams.

Kaip naudoti NMS Bukkit

Naudodami „Bukkit“ žaidėjai gali sukurti abstrakcijos sluoksnį aplink NMS kodą. Tai leidžia jiems kurti papildinius, kurie sąveikauja su serverio kodu, neatliekant tiesioginių kodų bazės pakeitimų, kurie yra būtini žaidimui. Pagalvokite apie tai kaip apie langą, leidžiantį peržiūrėti kodą, kurį norite naudoti savo papildinyje, bet taip pat veikia kaip kliūtis, neleidžianti tiesiogiai pakeisti kodo.

Panagrinėkime, kaip naudoti „Bukkit“ su „Minecraft“ NMS.

Prieš pradedant – ką reikia žinoti apie „Bukkit“.

„Bukkit“ yra API, leidžianti kurti ir naudoti papildinius, kurie keičia „Minecraft“ kelių žaidėjų aspektą. Bent jau buvo. Paskutinė Bukkit versija pasirodė 2016 m., o nuo to laiko ji buvo nutraukta, kad būtų galima sukurti kitą API, pavadintą Spigot. Dirbdamas panašiai kaip „Bukkit“, jis siūlo geresnį serverio našumą.

Taigi, norėdami naudoti „Bukkit“ savo papildiniams, turite žaisti pasenusią „Minecraft“ versiją ir susitaikyti su faktu, kad „Bukkit“ nėra toks geras, kaip jo pakaitinė API. Darant prielaidą, kad esate laimingas priimdamas šias aukas, čia yra vieninteliai dalykai, kurių jums reikia:

  • „Java Development Kit“ (JDK) 7 arba naujesnė versija, dauguma rekomenduoja JDK 8.

Turėdami tai, esate pasirengę sukurti kai kuriuos papildinius.

Kaip sukurti „Bukkit“ papildinius „Minecraft“.

Prieš pradėdami naudoti „Bukkit“ norėdami pasiekti „Minecraft“ NMS, turite pridėti API kaip priklausomybę, nustatyti pagrindinę klasę, kuri leidžia „Bukkit“ sąveikauti su jūsų sukurtu papildiniu ir suteikti „Bukkit“ informaciją, reikalingą jūsų papildiniui įkelti žaidimas. Kiekvienas veiksmas reikalauja kodavimo, o toliau pateikiami pavyzdžiai RIP pamoka.

1 veiksmas – pridėkite „Bukkit“ kaip priklausomybę

Anksčiau „Bukkit“ galėdavote pridėti kaip priklausomybę „Minecraft“, atsisiųsdami failą Bukkit.jar iš „Bukkit“ saugyklos ir įtraukdami jį į savo projekto klasės kelią. Ši parinktis nebepasiekiama, nes saugykla nebepasiekiama.

Laimei, yra alternatyvus metodas, kuris naudoja jūsų žaidimo pom.xml failą. Atidarykite failą ir pridėkite šias eilutes:

spigot-repohttps://hub.spigotmc.org/nexus/content/repositories/snapshots/Bukkit APIorg.bukkitbukkit{VERSION}jeigu

2 veiksmas – sukurkite pagrindinę savo papildinio klasę

Jūsų papildinys turi turėti galimybę sukurti vieną pagrindinės klasės egzempliorių, kuris naudojamas „JavaPlugin“ išplėsti, kad jis atpažintų ir leistų naudoti papildinį, kai žaidžiate. Pagalvokite apie šią pagrindinę klasę kaip duris, pro kurias „Bukkit“ gali įeiti ir įkelti, ir valdyti papildinį. Dauguma savo įskiepių pagrindinei klasei suteikia tokį patį pavadinimą kaip ir pačiam įskiepiui, todėl koduojant lengviau nurodyti pagrindinę klasę.

Šis pavyzdinis kodas iš „RIP Tutorial“ pateikia pagrindinės įskiepio „MyPlugin“ klasės pavyzdį:

paketas com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName}; importuoti org.bukkit.plugin.java. Java papildinys; public final class MyPlugin išplečia JavaPlugin { @Override public void onEnable() { //Iššaukiamas įjungus įskiepį getLogger().info("onEnable buvo iškviestas!"); } @Override public void onDisable() { //Iššaukiamas, kai įskiepis išjungtas getLogger().info("OnDisable buvo iškviestas!"); } }

Prieiga prie savo papildinio iš kitos klasės

Galbūt norėsite pasiekti savo papildinį naudodami kitą klasę nei pagrindinė klasė, kurią sukūrėte, nes tai gali būti naudinga norint pasiekti kelis papildinius viename „Minecraft“ žaidime.

Norėdami tai padaryti, pirmiausia turite išsaugoti pagrindinės klasės, kurią sukūrėte naudodami „Bukkit“, egzempliorių, kad kitos klasės galėtų jį pasiekti. Vėlgi, šis pavyzdinis kodas yra iš RIP Tutorial ir naudoja "MyPlugin" klasės pavadinimą:

public class MyPlugin išplečia JavaPlugin { privatus statinis MyPlugin egzempliorius; //Faktiškai galutinis kintamasis, kuriame yra jūsų papildinio egzempliorius public MyPlugin(){ if (MyPlugin.instance != null) { //Nereikalinga patikra, bet užtikrinama, kad papildinys būtų inicijuotas tik vieną kartą. throw new Error("Papildinys jau inicijuotas!"); } MyPlugin.instance = tai; //Papildinio konstruktorius turėtų būti iškviestas tik vieną kartą } public static MyPlugin getInstance(){ //Gaukite papildinio egzemplioriaus grąžinimo egzempliorių; } //kitas jūsų kodas... }

Kai turėsite egzempliorių, galite pasiekti pagrindinę klasę (sukurtą per „Bukkit“) naudodami komandą „getInstance()“. Štai pavyzdys, kaip naudojant RIP Tutorial pagrindinę klasę „MyPlugin“:

public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info("Ką tik naudojome "MyPlugin"); } }

3 veiksmas – sukurkite savo plugin.yml failą

Plugin.yml faile yra svarbios informacijos apie jūsų papildinį, tai reiškia, kad jis naudojamas kaip pagrindinis papildinio konfigūracijos failas. Be šio failo „Bukkit“ neturės informacijos, reikalingos jūsų papildiniui įkelti į „Minecraft“, todėl įskiepio nepavyks įkelti ir žaidimas gali sugesti.

Šiame faile turi būti ši informacija:

  • vardas – Tai pavadinimas, kurį suteikėte savo papildiniui (t. y. RIP Tutorial „MyPlugin“) ir jis bus rodomas žurnalo pranešimuose ir jūsų papildinių sąraše.
  • Versija – Naudokite šį lauką, norėdami pažymėti papildinio versijų istoriją, pradedant nuo 1.0.0 ir didėjant keičiant arba redaguojant papildinį.
  • Pagrindinis – Jame yra pagrindinės papildinio klasės pavadinimas, kuris išplečia „JavaPlugin“, leidžiantį „Bukkit“ patekti į papildinį. RIP mokymo programos pavyzdyje šis pavadinimas būtų „paketas com.example.myplugin“, kurį galite matyti aukščiau esančiame pagrindinės klasės kode.
  • apibūdinimas – Pagrindinis papildinio veikimo aprašymas.
  • Autorius – Galite turėti vieną autorių arba kelis autorius, pastarieji žymimi laužtiniais skliaustais ir kableliais taip – ​​[Author1, Author2, Author3].
  • Pagalbininkai – Naudosite šią skiltį, kad atkreiptumėte dėmesį į visus, kurie prisidėjo prie jūsų papildinio, o formatavimas bus toks pat kaip skilties „Autoriai“.
  • Interneto svetainė – Jei turite svetainę, kurią norite prijungti, arba norite susieti žmones su papildinio puslapiu arba „GitHub“ saugykla, čia galite įvesti URL.
  • API versija – Įveskite čia naudojamą „Bukkit“ API versiją. Jei neįvesite API versijos, „Minecraft“ manys, kad įkelia seną papildinį. Įskiepis vis tiek gali veikti, tačiau įkeliant konsolėje bus išspausdintas įspėjimas, kad jis yra sena versija.

Toliau pateikiamas failo plugin.yml pavyzdys, pagrįstas pavadinimų suteikimo sutartimis, naudojamomis šiame straipsnyje naudojamame RIP mokymo programos kode:

pavadinimas: MyPlugin. versija: 1.0.0. pagrindinis: paketas com.example.myplugin. aprašymas: „Minecraft“ bandomasis papildinys. autorius: RIP pamoka. Interneto svetainė: https://riptutorial.com/bukkit. api versija: 1.17. 

Ar „Bukkit“ tinka prieigai ir naudojimui NMS?

Sukūrėte „Bukkit“ priklausomybę, sukūrėte pagrindinę klasę, kuri tarnautų kaip „Bukkit“ durys į papildinį, ir turite failą plugin.yml, kurį „Bukkit“ gali naudoti, kad pamatytų, ką įskiepis veikia. Tačiau galbūt nenorėsite to daryti, nes „Bukkit“ yra taip pasenusi, kad jums reikės paleisti labai seną „Minecraft“ versiją, kad galėtumėte ją efektyviai naudoti. Daugelis jau perėjo prie „Sprigo“, kuris atspindi didžiąją dalį to, ką padarė „Bukkit“, siūlydamas geresnį našumą.

Jei vis tiek norite naudoti „Bukkit“, kad pasiektumėte papildinius, kodėl pasirinkote jį prieš modernesnes API? Kokius papildinius naudojate, kad pagerintumėte savo „Minecraft“ patirtį? Papasakokite mums apie viską toliau pateiktame komentarų skyriuje.