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.
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:
Dzięki temu jesteś gotowy na utworzenie wtyczek.
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.
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
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!");
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”);
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:
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
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.