Az NMS használata a Bukkitben

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

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:

  • 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

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-repohttps://hub.spigotmc.org/nexus/content/repositories/snapshots/Bukkit APIorg.bukkitbukkit{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.
  • – 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.