Bár a Minecraft üdvözli a különféle bővítményeket (amelyekkel megváltoztathatja a játékélményt), a játék egyes elemei védve vannak a bővítmények manipulálásától. Háló. Minecraft. A szerver (NMS) egyike ezeknek a védett csomagoknak, mivel a játék létfontosságú szerverkódját tartalmazza. Ez a kód közvetlenül a Minecraft fejlesztőitől, a Mojangtól származik, és állítólag nem lesz elérhető a játékosok számára.
![Az NMS használata a Bukkitben](/f/bec5573c6a279f04f77e0c4f46e30f87.jpg)
A Bukkit segítségével a játékosok absztrakciós réteget hozhatnak létre az NMS kód körül. Ez lehetővé teszi számukra, hogy olyan beépülő modulokat fejlesszenek ki, amelyek kölcsönhatásba lépnek a szerver kódjával anélkül, hogy közvetlenül módosítanák a kódbázist, ami elengedhetetlen a játékhoz. Tekintsd úgy, mint egy ablakot, amely lehetővé teszi a beépülő modulban használni kívánt kód megtekintését, de akadályként is működik, amely megakadályozza a kód közvetlen megváltoztatását.
Fedezzük fel, hogyan használhatjuk a Bukkit a Minecraft NMS-szel.
Mielőtt elkezdené – Amit a Bukkitről tudni kell
A Bukkit egy API, amely lehetővé teszi olyan beépülő modulok létrehozását és használatát, amelyek megváltoztatják a Minecraft többszereplős aspektusát. Legalábbis az volt. A Bukkit utolsó verziója 2016-ban jelent meg, és azóta megszűnt, hogy helyet adjon egy másik, Spigot nevű API-nak. Miközben a Bukkithez hasonlóan működik, jobb szerverteljesítményt kínál.
Tehát a Bukkit beépülő modulokhoz való használatához le kell játszania a Minecraft elavult verzióját, és el kell fogadnia azt a tényt, hogy a Bukkit nem olyan jó, mint a helyettesítő API. Feltéve, hogy örömmel fogadja ezeket az áldozatokat, csak a következőkre van szüksége:
![](/f/259eba9258ab843ea7dd23f38ce3f5cd.jpg)
- Java Development Kit (JDK) 7 vagy újabb, a legtöbb ajánlott JDK 8.
Ezzel készen áll néhány bővítmény létrehozására.
Hogyan készítsünk Bukkit beépülő modulokat a Minecrafthoz
![](/f/bb0c020340c91a5ad1d50b8e7cfe3600.jpg)
Mielőtt elkezdené használni a Bukkit a Minecraft NMS-hez való hozzáféréséhez, hozzá kell adnia az API-t függőségként, be kell állítania egy fő osztályt, amely lehetővé teszi, hogy a Bukkit kölcsönhatásba lépjen az Ön által létrehozott beépülő modullal, és megadja a Bukkit számára azokat az információkat, amelyekre szüksége van a bővítmény betöltéséhez a játék. Minden lépés kódolást igényel, a következő példák pedig innen származnak RIP oktatóanyag.
1. lépés – Adja hozzá a Bukkit függőségként
Korábban hozzáadhatta a Bukkit függőséget a Minecrafthoz, ha letöltötte a Bukkit.jar fájlt a Bukkit Repository-ból, és hozzáadta a projekt osztályútvonalához. Ez a lehetőség már nem elérhető, mert a Repository már nem érhető el.
Szerencsére van egy alternatív módszer, amely felhasználja a játék pom.xml fájlját. Nyissa meg a fájlt, és adja hozzá a következő sorokat:
spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ Bukkit APIorg.bukkit bukkit {VÁLTOZAT} biztosítani
2. lépés – Hozd létre a beépülő modulod fő osztályát
A beépülő modulnak képesnek kell lennie a fő osztály egyetlen példányának létrehozására, amely a „JavaPlugin” kiterjesztésére szolgál, hogy felismerje és lehetővé tegye a bővítmény használatát, amikor játékban van. Tekintsd ezt a fő osztályt úgy, mint egy ajtót, amelyen keresztül a Bukkit beléphet a bővítmény betöltésére és manipulálására. A legtöbben ugyanazt a nevet adják a beépülő moduljuk fő osztályának, mint magának a beépülő modulnak, így könnyebben hivatkozhatunk a fő osztályra a kódolás során.
A RIP oktatóprogram következő példakódja példát mutat a „MyPlugin” nevű bővítmény fő osztályára:
csomag com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName}; importálja az org.bukkit.plugin.java-t. JavaPlugin; public final class A MyPlugin kiterjeszti a JavaPlugin-t { @Override public void onEnable() { //A beépülő modul engedélyezése esetén hívódik getLogger().info("onEnable meghívva!"); } @Override public void onDisable() { //A beépülő modul letiltásakor hívódik getLogger().info("Az onDisable-t meghívták!"); } }
Beépülő modul elérése egy másik osztályból
Előfordulhat, hogy a bővítményt más osztályon keresztül szeretné elérni, mint a számára létrehozott fő osztályt, ami hasznos lehet több bővítmény eléréséhez egyetlen Minecraft játékban.
Ehhez először el kell tárolnia a Bukkit segítségével létrehozott fő osztály egy példányát, hogy más osztályok hozzáférhessenek. A következő példakód ismét a RIP oktatóprogramból származik, és a „MyPlugin” osztálynevet használja:
public class A MyPlugin kiterjeszti a JavaPlugin-t { private static MyPlugin példány; //A beépülő modul példányát tartalmazó végső változó public MyPlugin(){ if (MyPlugin.instance != null) { //Felösleges ellenőrzés, de biztosítja, hogy a beépülő modul csak egyszer legyen inicializálva. throw new Error("A beépülő modul már inicializálva!"); } MyPlugin.instance = ez; //A beépülő modul konstruktorát csak egyszer szabad meghívni } public static MyPlugin getInstance(){ //A beépülő modul példányának beszerzése; } //a másik kódod... }
Ha a példány a helyén van, a „getInstance()” paranccsal elérheti a fő osztályt (a Bukkit segítségével hozta létre). Íme egy példa erre a RIP Tutorial „MyPlugin” főosztályának használatával:
public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info("Most használtuk a MyPlugin-t"); } }
3. lépés – Hozd létre a plugin.yml fájlt
A plugin.yml fájl létfontosságú információkat tartalmaz a beépülő modulról, ami azt jelenti, hogy a beépülő modul alapvető konfigurációs fájljaként szolgál. E fájl nélkül a Bukkit nem rendelkezik azokkal az információkkal, amelyekre szüksége van a bővítmény Minecraftba való betöltéséhez, ami a plugin betöltésének sikertelenségéhez és a játék valószínűleg összeomlásához vezethet.
Ennek a fájlnak a következő részleteket kell tartalmaznia:
- Név – Ezt a nevet adtad a bővítményednek (azaz a RIP Tutorial „MyPlugin”), és ez megjelenik a naplóüzenetekben és a beépülő modulok listájában.
- Változat – Ezzel a mezővel jelölheti a beépülő modul verzióelőzményeit, kezdve az 1.0.0-tól, és felfelé haladva a bővítmény módosításával vagy szerkesztésével.
- Fő – Tartalmazza a plugin fő osztályának nevét, amely kiterjeszti a „JavaPlugin”-t, lehetővé téve a Bukkit számára, hogy belépjen a bővítménybe. A RIP oktatóprogram példájában ez a név „package com.example.myplugin” lenne, amelyet a fenti fő osztálykódban láthat.
- Leírás – A beépülő modul működésének alapvető leírása.
- Szerző – Egy vagy több szerzője lehet, az utóbbiakat szögletes zárójelekkel és vesszőkkel jelöljük a következőképpen – [Szerző1, Szerző2, Szerző3].
- Közreműködők – Ebben a szakaszban megjegyezhet mindenkit, aki hozzájárult a bővítményéhez, és a formázás megegyezik a „Szerzők” szakasz formázásával.
- Weboldal – Ha van egy webhelye, amelyet csatlakoztatni szeretne, vagy embereket szeretne linkelni a beépülő modul oldalára vagy a GitHub-tárházára, itt megadhatja az URL-t.
- API-verzió – Adja meg a Bukkit API itt használt verzióját. Ha nem ad meg API-verziót, a Minecraft feltételezi, hogy egy régebbi beépülő modult tölt be. A beépülő modul továbbra is működhet, bár a betöltéskor megjelenik egy figyelmeztetés a konzolon, hogy régi verzióról van szó.
A következő egy példa egy plugin.yml fájlra, amely a jelen cikkben használt RIP oktatóprogram kódjában használt elnevezési konvenciókon alapul:
név: MyPlugin. verzió: 1.0.0. fő: csomag com.example.myplugin. leírás: Tesztbővítmény a Minecrafthoz. szerző: RIP oktatóanyag. weboldal: https://riptutorial.com/bukkit. api verzió: 1.17.
A Bukkit megfelelő az NMS eléréséhez és használatához?
Ezzel létrehozta a Bukkit-függőséget, felépített egy fő osztályt, amely Bukkit ajtajaként szolgál a beépülő modulba, és rendelkezik egy plugin.yml fájllal, amelyet a Bukkit használhat a bővítmény működésének megtekintéséhez. Lehetséges azonban, hogy ezt nem szeretné megtenni, mivel a Bukkit annyira elavult, hogy a hatékony használathoz a Minecraft nagyon régi verzióját kell futtatnia. A legtöbben már áttértek a Sprigot-ba, ami tükrözi a legtöbbet, amit Bukkit tett, miközben jobb teljesítményt nyújtott.
Ha továbbra is a Bukkit szeretné használni a bővítmények eléréséhez, miért ezt választotta a modernebb API-k előtt? Milyen típusú bővítményeket használ a Minecraft élmény fokozására? Mondjon el nekünk mindent az alábbi megjegyzések részben.