Stwórz plugin do Minecrafta bez kodowania
Na serwerze Minecraft wszystko, co wykracza poza podstawową grę, przechodzi przez plugin, a plugin pisze się w Javie. To ściana, o którą rozbija się większość osób prowadzących serwer: wiedzą dokładnie, czego chcą, a jedyna droga prowadzi przez język programowania, projekt do skompilowania i API do nauczenia się. Ta strona wyjaśnia co można zrobić bez tego, a przede wszystkim, gdzie są granice.
Ściana i trzy znane sposoby jej ominięcia
Przed NimBlock osoba, która nie programuje, ma trzy opcje, i każda z nich ma wyraźną granicę, którą lepiej poznać, zanim się w nią zaangażuje.
- Bloki poleceń. Znajdują się w świecie, w jednym konkretnym miejscu, i uruchamiają się przez redstone albo zegar. Nie potrafią zareagować na zdarzenie serwera, a tym bardziej mu zapobiec.
- Paczki danych. Działają w ramach zwykłej gry (vanilla): funkcje, postępy, tabele łupów. Bez prawdziwej komendy, bez przechwytywania czatu, bez anulowania akcji. W zamian działają na zwykłym serwerze vanilla, bez Papera.
- Skript. Dużo potężniejszy od dwóch poprzednich i potężniejszy od NimBlocka. To prawdziwy język, czyli składnia do nauczenia się i błędy do rozszyfrowania.
Te trzy rozwiązania istnieją od dawna i żadne z nich nie jest przestarzałe. Czego brakowało, to poziomu pomiędzy blokiem poleceń a językiem programowania.
Reguła w jednym zdaniu
Cała gramatyka NimBlock mieści się w jednym zdaniu: kiedy to się wydarzy, jeśli te warunki są spełnione, wtedy zrób to. Plugin to lista reguł, reguła to wyzwalacz, kilka warunków i kilka akcji. Nie ma nic więcej do nauczenia się, i to celowo: gramatyka, która mieści się w jednym zdaniu, mieści się też w głowie.
W edytorze to klocki, które się łączą: klocek, który nie może znaleźć się w danym miejscu, tam się nie zatrzaśnie. A to, co przepuści edytor, przechwytuje walidator: specyfikacja jest przyjęta albo odrzucona w całości, nigdy do połowy. Plugin ochronny pozbawiony swojej reguły ochronnej nie byłby widoczny w grze, a to dokładnie ten rodzaj awarii, którego nikt nie chce.
Co można zrobić już dziś
9 wyzwalaczy, 8 warunków, 14 akcji. Dokładna, aktualna lista, z opisem każdego parametru, znajduje się na stronie gramatyki: jest generowana na podstawie katalogu, więc nigdy nie kłamie. W skrócie, co umożliwiają:
- Reagować na to, co się dzieje: połączenie, rozłączenie, wiadomość na czacie, śmierć, zniszczenie lub postawienie bloku, komenda, którą sam wymyślisz, albo po prostu co N sekund.
- Filtrować po uprawnieniu, statusie operatora, świecie, punktach życia, treści tekstu, porównaniu liczb albo prawdopodobieństwie.
- Działać: wiadomości, duże tytuły, dźwięki, przedmioty, efekty, leczenie, teleportacje, ogłoszenia na cały serwer, wykonanie komendy konsoli oraz anulowanie zdarzenia, które właśnie nastąpiło. To właśnie ta ostatnia zamienia listę w prawdziwe zabezpieczenia.
Czego to nie zastąpi
Strona, która obiecuje wszystko, nikomu nie służy. Czego NimBlock nie robi:
- Żadnej nowej mechaniki gry. Nowy typ bloku, nowa encja, ekwipunek zrobiony na miarę: to Java i tak zostanie.
- Żadnych zmiennych ani pętli. Reguła reaguje, nie liczy. Jeśli twój pomysł wymaga przechowywania złożonego stanu między dwoma zdarzeniami, wykraczasz poza tę gramatykę.
- Żadnego pluginu z zewnątrz. NimBlock wykonuje twoje specyfikacje, nie wczytuje pliku .jar pobranego skądinąd.
- Nowa komenda czeka na kolejne uruchomienie. Reszta stosuje się na gorąco, bez wyłączania serwera, ale Minecraft rejestruje swoje komendy podczas uruchamiania: mówi o tym panel w momencie, gdy to się dzieje, zamiast dawać ci to odkryć dopiero w grze.
Gdzie działa plugin
Nigdzie nie ma Javy generowanej, a potem kompilowanej. Serwer wczytuje silnik napisany raz dla wszystkich, a ten silnik odczytuje twoją specyfikację. Dzięki temu plugin złożony tutaj nie ma długu technicznego: kiedy Minecraft się zmienia, to silnik się dostosowuje, jeden raz, a nie każdy plugin napisany przy jego użyciu.
Na serwerze NimBlock instalacja to jedno kliknięcie, a plugin trafia na miejsce bez przerywania gry. Sam silnik zostanie opublikowany w katalogach pluginów, żeby ta sama specyfikacja mogła działać na serwerze, który nie jest hostowany tutaj.
Częste pytania
- Czy naprawdę można zrobić plugin do Minecrafta bez umiejętności programowania?
- Tak, pod jednym warunkiem: układasz reguły w ramach danej gramatyki, nie piszesz dowolnego programu. Reguła mówi „kiedy to się wydarzy, jeśli te warunki są spełnione, wtedy zrób to”. Niemal wszystko, czego potrzebuje serwer między znajomymi, mieści się w tej formie: wiadomości powitalne, nagrody, zabezpieczenia, ogłoszenia, własne komendy. To, co się w niej nie mieści, to wymyślenie całkiem nowej mechaniki gry, a wtedy potrzebna jest Java.
- Czym różni się to od bloków poleceń?
- Bloki poleceń znajdują się w świecie, w jednym konkretnym miejscu, i uruchamiają się przez redstone albo zegar. Plugin uruchamia się na zdarzenie serwera: gracz się łączy, blok zostaje zniszczony, wiadomość pojawia się na czacie. Czego bloki poleceń nie potrafią, to zareagować na to, co się dzieje, a przede wszystkim temu zapobiec. Reguła NimBlock może anulować zdarzenie, które właśnie nastąpiło.
- A w porównaniu z datapackiem?
- Paczka danych działa w ramach zwykłej gry (vanilla): funkcje, postępy, tabele łupów. Nie potrafi dodać prawdziwej komendy, przechwycić czatu ani anulować akcji. Plugin Paper potrafi to zrobić, ponieważ działa wewnątrz serwera, a nie w danych świata. W zamian paczka danych działa na zwykłym serwerze vanilla, a plugin wymaga Papera albo Spigota.
- A w porównaniu ze Skriptem?
- Skript to protoplasta tego gatunku i jest zdecydowanie potężniejszy, bez porównania: to prawdziwy język, ze zmiennymi, pętlami i ogromną biblioteką dodatków. To też język, czyli składnia do nauczenia się, błędy do odczytania i plik, który nie mówi, gdzie się zepsuł. NimBlock robi znacznie mniej, ale odrzuca nieprawidłową regułę, zanim ją zapisze, i pokazuje dokładne miejsce problemu na danym klocku. Jeśli dobrze czujesz się w Skripcie, zostań przy Skripcie.
- Czy plugin jest gdzieś kompilowany do Javy?
- Nie, i to jest kluczowy wybór tego produktu. Twoja specyfikacja pozostaje plikiem JSON, a serwer wczytuje silnik napisany raz dla wszystkich, który ją odczytuje i wykonuje. Nic nie jest generowane, nic nie jest kompilowane. Praktyczny skutek: nowa wersja Minecrafta kosztuje raz, w tym silniku, a nie w każdym pluginie napisanym przy jego użyciu.
- Czy można zabrać plugin na serwer, który nie jest hostowany w NimBlock?
- To jest w planach: silnik, który odczytuje specyfikacje, zostanie opublikowany w katalogach pluginów. Specyfikacja to zwykły plik JSON: silnik odczytuje go z folderu pluginów serwera. W chwili pisania tej strony nie jest to jeszcze dostępne.
Ułóż swoją pierwszą regułę i zobacz, jak działa na serwerze, który już istnieje.
Za darmo w becie · jeden serwer 1 GB na konto