Jak używać NMS w Bukkit

Jak używać NMS w Bukkit

Chociaż Minecraft jest przyjazny w różnych wtyczkach (których możesz użyć do zmiany swojej gry). Niektóre elementy gry są chronione przed manipulacją wtyczkami. Internet.Minecraft.Serwer (NMS) jest jednym z tych chronionych pakietów, ponieważ zawiera istotny kod serwerowy dla gry. Ten kod pochodzi bezpośrednio od programistów Minecrafta, Mojang, i nie powinien być dostępny dla graczy.

Z Bukkit gracze mogą stworzyć warstwę abstrakcji wokół kodu NMS. To pozwala im opracowywać wtyczki, które wchodzą w interakcje z kodem serwera bez bezpośredniego zmiany w kodzie, która jest niezbędna do gry w grze. Pomyśl o tym jak okno, które pozwala spojrzeć na kod, którego chcesz użyć we wtyczce, ale także działa jako bariera, która uniemożliwia bezpośrednio zmianę kodu.

Zbadajmy, jak używać Bukkit z NMS Minecraft.

Zanim zaczniesz - co musisz wiedzieć o Bukkit

Bukkit to interfejs API, który pozwala tworzyć i używać wtyczek, które zmieniają sposób, w jaki doświadczasz aspektu multiplayer Minecraft. Przynajmniej tak było. Ostatnia wersja Bukkit ukazała się w 2016 roku i od tego czasu została przerwana, aby zrobić miejsce dla innego interfejsu API, o imieniu Spigot. Pracując podobnie do Bukkit, oferuje lepszą wydajność serwera.

Tak więc użycie Bukkit do wtyczek wymaga zarówno odtwarzania przestarzałej wersji Minecraft, jak i zaakceptowania faktu, że Bukkit nie jest tak dobry jak jego API zamienne. Zakładając, że chętnie przyjmujesz te ofiary, oto jedyne rzeczy, których potrzebujesz:

  • Zestaw rozwoju Java (JDK) 7 lub więcej, z najbardziej zalecającym JDK 8.

Dzięki temu jesteś gotowy na utworzenie wtyczek.

Jak utworzyć wtyczki Bukkit dla Minecraft

Zanim zaczniesz używać BukKit w celu uzyskania dostępu do NMS Minecraft, musisz dodać API jako zależność, ustaw klasę główną, która umożliwia Bukkit na interakcję z utworzoną wtyczką, i zapewnić Bukkitowi informacje, które musi załadować wtyczkę do wtyczki do wtyczki do wtyczki do wtyczki do wtyczki do gra. Każdy krok wymaga kodowania, z następującymi przykładami pochodzącymi z samouczka RIP.

Krok 1 - Dodaj Bukkit jako zależność

W przeszłości możesz dodać Bukkit jako zależność w Minecraft, pobierając Bukkit.plik jar z repozytorium Bukkit i dodanie go do ścieżki klasowej projektu. Ta opcja nie jest już dostępna, ponieważ repozytorium nie jest już dostępne.

Na szczęście istnieje alternatywna metoda, która wykorzystuje POM twojej gry.plik XML. Otwórz plik i dodaj następujące wiersze:

  SPIGOT-REPO https: // hub.SPIGOTMC.org/nexus/content/repozytoria/migawki/      org.Bukkit Bukkit WERSJA pod warunkiem, że   

Krok 2 - Utwórz główną klasę wtyczki

Twoja wtyczka musi być w stanie utworzyć jedną instancję swojej głównej klasy, która służy do rozszerzenia „javaplugin”, aby rozpoznała i pozwala używać wtyczki, gdy jesteś w grze. Pomyśl o tej głównej klasie jako o drzwiach, przez które Bukkit może wejść zarówno do załadowania, jak i manipulowania wtyczką. Większość podaje główną klasę wtyczki taką samą nazwą co sama wtyczka, co ułatwia odwołanie się do klasy głównej podczas kodowania.

Poniższy przykładowy kod z samouczka RIP oferuje przykład głównej klasy dla wtyczki o nazwie „MyPlugin:”

pakiet com.przykład.Myplugin; // $ topleveldomain.$ Domena.$ PluginName; import org.Bukkit.podłącz.Jawa.Javaplugin; public Final Class MyPlugin rozszerza javaplugin @Override public void oneenable () // wywołany, gdy wtyczka jest włączona getLogger ().informacje („wywołano Onenable!"); @Override public void onDisable () // wywołany, gdy wtyczka jest wyłączona getLogger ().informacje („wywołano onDisable!"); 

Dostęp do wtyczki z innej klasy

Możesz uzyskać dostęp do swojej wtyczki za pośrednictwem innej klasy niż główna klasa, którą dla niej tworzysz, co może być pomocne w dostępie do kilku wtyczek w jednej grze Minecraft.

Aby to zrobić, musisz najpierw przechowywać instancję głównej klasy, którą utworzyłeś za pomocą Bukkit, aby inne klasy mogły uzyskać do niego dostęp. Ponownie, poniższy przykładowy kod pochodzi z samouczka RIP i używa nazwy klasy „MyPlugin”:

Klasa publiczna Myplugin rozszerza Javaplugin prywatny statyczny instancja Myplugin; // Skutecznie końcowa zmienna zawierająca instancję wtyczki public myPlugin () if (MyPlugin.instancja != null) // niepotrzebne sprawdzenie, ale zapewnia, że ​​wtyczka jest inicjowana tylko raz. Rzuć nowy błąd („Wtyczka już zainicjowana!"); Myplugin.instance = to; // Konstruktor wtyczki powinien być nazywany tylko raz public static Myplugin getInstance () // Get's instance return instancji wtyczki;  // Twój drugi kod… 

Po wprowadzeniu instancji możesz uzyskać dostęp do swojej głównej klasy (utworzonej przez Bukkit) za pomocą polecenia „getInstance ()”. Oto przykład tego użycia głównej klasy „MyPlugin” RIP „MyPlugin”:

Klasa publiczna MOTOTOTERCLASS public void dosomethingWithMainClass () MyPlugin.uzyskac instancje().getLogger ().Informacje („Właśnie użyliśmy Myplugin”);  

Krok 3 - Utwórz swoją wtyczkę.plik YML

Wtyczka.Plik YML zawiera istotne informacje o wtyczce, co oznacza, że ​​służy jako podstawowy plik konfiguracyjny wtyczki. Bez tego pliku Bukkit nie będzie miał informacji, których potrzebuje do załadowania wtyczki do Minecraft, co prowadzi do awarii wtyczki, a gra prawdopodobnie awaria.

Ten plik powinien zawierać następujące szczegóły:

  • Nazwa - To jest nazwa, którą podałeś do swojej wtyczki (ja.mi., RIP „MyPlugin”) i będzie wyświetlał komunikaty dziennika i listy wtyczek.
  • Wersja - Użyj tego pola, aby oznaczyć historię wersji wtyczki, zaczynając od 1.0.0 i wchodząc w górę, kiedy zmienisz lub edytujesz wtyczkę.
  • Główny - Zawiera nazwę głównej klasy wtyczki, która rozszerza „Javaplugin”, umożliwiając Bukkit wprowadzenie wtyczki. W przykładzie samouczka RIP ta nazwa brzmiałaby „pakiet com.przykład.Myplugin ”, który widać w powyższym kodzie klasy głównej.
  • Opis - Podstawowy opis tego, co robi twoja wtyczka.
  • Autor - Możesz mieć jednego autora lub wielu autorów, przy czym te ostatnie są oznaczone kwadratowymi nawiasami i przecinkami w następujący sposób - [Autor1, autor2, autor3].
  • Współpracownicy - Użyjesz tej sekcji, aby zanotować każdego, kto przyczynił się do Twojej wtyczki, a formatowanie jest takie same jak w sekcji „Autorzy”.
  • Strona internetowa - Jeśli masz witrynę do podłączania lub chcesz połączyć osoby na stronę wtyczki lub repozytorium GitHub, możesz wprowadzić adres URL tutaj.
  • API-wersja - Wprowadź wersję interfejsu API Bukkit, którego używasz tutaj. Jeśli nie wprowadzisz wersji API, Minecraft założy, że ładuje starszą wtyczkę. Wtyczka może nadal działać, choć zobaczysz ostrzeżenie o tym, że jest to starsza wersja wydrukowana w konsoli po załadowaniu.

Poniżej znajduje się przykład wtyczki.Plik YML oparty na konwencjach nazewnictwa używanych w kodzie samouczkowym RIP użyty w tym artykule:

Nazwa: Myplugin Wersja: 1.0.0 Main: pakiet com.przykład.MYPLUGIN Opis: Wtyczka testowa dla Minecraft Autor: RIP Tutorial Strona internetowa: https: // riptitorial.COM/BUKKIT API-Wersja: 1.17 

Czy Bukkit jest odpowiedni do dostępu i używania NMS?

Dzięki temu stworzyłeś zależność Bukkit, zbudowałeś główną klasę, aby służyć jako drzwi Bukkit w wtyczce i mieć wtyczkę.plik YML, którego Bukkit może użyć, aby zobaczyć, co robi wtyczka. Jednak możesz tego nie chcieć, ponieważ Bukkit jest tak nieaktualny, że musisz uruchomić bardzo starą wersję Minecraft. Większość już przeniosła się do Sprigot, co odzwierciedla większość tego, co zrobił Bukkit, oferując lepszą wydajność.

Jeśli nadal chcesz używać Bukkit, aby uzyskać dostęp do wtyczek, dlaczego wybrałeś je przed bardziej nowoczesnymi interfejsami API? Jakiego rodzaju wtyczek używasz, aby ulepszyć swoje wrażenia z Minecraft? Opowiedz nam o tym w sekcji komentarzy poniżej.