// Minecraft

LuckPerms: rangi i uprawnienia na serwerze Minecraft

LuckPerms: rangi i uprawnienia na serwerze Minecraft

LuckPerms decyduje na serwerze Minecraft o tym, kto co może, i opiera się na czterech klockach: użytkownikach, grupach, node'ach uprawnień i kontekstach. Złota zasada brzmi: uprawnienia ustawiasz na grupach, a nie na pojedynczych graczach, a grupy dziedziczą po sobie, dzięki czemu każdy node siedzi tylko w jednym miejscu. Układ z pięcioma rangami (default, czlonek, vip, moderator i admin) zbudujesz edytorem webowym w kilka chwil, a jeśli coś nie działa, przyczynę niemal zawsze znajdziesz przez /lp user <nick> info i /lp user <nick> permission check <node>.

Jak zbudowany jest LuckPerms?

Uprawnienie to nic więcej niż linijka tekstu, czyli node, którą plugin sprawdza, zanim cokolwiek wykona. Kiedy ktoś wpisuje /home, EssentialsX patrzy, czy ten gracz ma essentials.home ustawione na true. LuckPerms jest kartoteką, która udziela tej odpowiedzi: każdy plugin sam decyduje, jakie node'y zna, a LuckPerms pilnuje wyłącznie tego, kto je ma.

Zarządzasz dwoma rodzajami posiadaczy uprawnień. Użytkownik to gracz, zapisywany wewnętrznie po UUID, więc zmiana nicku niczego nie psuje. Grupa to zbiór node'ów, do którego wrzucasz użytkowników. Każdy, kto wejdzie na serwer, siedzi automatycznie w default; tej grupy nie da się usunąć i to w niej umieszczasz wszystko, co ma przysługiwać naprawdę każdemu.

Dwie rzeczy ustaw od razu porządnie: weight i meta. Weight, czyli waga, decyduje o kolejności przy konfliktach i o sortowaniu listy graczy pod Tab (/lp group vip setweight 20). Meta to wszystko, co nie jest zwykłym tak albo nie, na przykład prefiks: /lp group vip meta setprefix 20 \"&6[VIP] &f\". Ten prefiks pojawi się na czacie dopiero dzięki pluginowi czatu, najczęściej EssentialsX Chat z Vaultem.

Czym jest inheritance i dlaczego oszczędza ci godziny?

Inheritance, czyli dziedziczenie, oznacza, że grupa ma inną grupę jako parenta i przejmuje z niej wszystko. Ustawiasz to komendą /lp group vip parent add czlonek. Jeśli później chcesz, żeby każdy płacący gracz dostał /back, wpisujesz ten node raz we właściwej grupie, zamiast w czterech grupach osobno.

Przy konflikcie obowiązują dwie zasady. Node ustawiony bezpośrednio na grupie wygrywa z tym samym node'em przychodzącym przez parenta. Jeśli dwa parenty mają przeciwne wartości, wygrywa parent z wyższym weight. Tak właśnie odbierasz coś punktowo: /lp group vip permission set essentials.tpahere false zabiera tę komendę grupie vip, nawet jeśli w grupie czlonek jest włączona.

Minus jest taki, że błędy też się dziedziczą. Wrzucisz coś niebezpiecznego do default i w sekundę ma to cały twój serwer. Zmiany w default testuj więc na drugim koncie.

Jak wygląda działający układ rang?

Poniższa struktura sprawdza się na większości serwerów survival i SMP, niezależnie od tego, czy dopiero zaczynasz według naszego poradnika o tym, jak stworzyć serwer Minecraft, czy porządkujesz istniejącą konfigurację. Moderator celowo dziedziczy po default, a nie po vip, żeby perki dla donatorów nie trafiały automatycznie do twojej ekipy.

GrupaDziedziczy poWeightTypowe node'y
defaultbrak0essentials.spawn, essentials.msg, essentials.rules
czlonekdefault10essentials.home, essentials.sethome, essentials.tpa
vipczlonek20essentials.hat, essentials.nick, essentials.back
moderatordefault50essentials.kick, essentials.mute, coreprotect.inspect, coreprotect.rollback
adminmoderator100essentials.ban, worldedit.*, luckperms.editor

Te node'y pochodzą z EssentialsX, CoreProtect i WorldEdit; to, których akurat potrzebujesz, zależy od twoich pluginów, więc zajrzyj do naszego zestawienia najlepszych pluginów do Minecrafta. Tak zbudujesz vip od zera:

  1. /lp creategroup vip
  2. /lp group vip parent add czlonek — vip dostaje wszystko z grupy czlonek, a przez nią również wszystko z default.
  3. /lp group vip setweight 20 — wyżej niż czlonek, niżej niż moderator.
  4. /lp group vip permission set essentials.nick true — powtarzasz dla każdego node'a.
  5. /lp group vip meta setprefix 20 \"&6[VIP] &f\"
  6. /lp user Steve parent add vip albo parent set vip, żeby zastąpić jego dotychczasowe grupy.

Tracki: awansowanie bez zastanawiania się

Track to uporządkowana drabinka grup. Tworzysz go komendą /lp createtrack gracz i wypełniasz przez /lp track gracz append default, potem append czlonek i append vip. Później przesuwasz kogoś o szczebel wyżej komendą /lp user Steve promote gracz, a w dół przez demote, bez pamiętania, która grupa jest następna. Pluginy liczące czas gry i obsługujące donacje wywołują dokładnie to. Rangi ekipy trzymaj poza tym trackiem: nie chcesz, żeby ktoś przesunął się z vip prosto na moderatora.

Czym są konteksty i kiedy ich potrzebujesz?

Kontekst to warunek, pod którym uprawnienie obowiązuje; w praktyce używasz world i server. Po /lp group budowniczy permission set worldedit.* true world=kreatywny ta grupa może korzystać z WorldEdit w twoim świecie kreatywnym i nigdzie indziej. Przez server=lobby ograniczasz node do jednego serwera w sieci.

Muszą się przy tym zgadzać dwie rzeczy: każdy serwer backendowy ma własną nazwę w ustawieniu server: w configu, a wszystkie serwery korzystają z tej samej bazy danych. Na pojedynczym serwerze z jednym światem konteksty nie są ci potrzebne; sięgaj po nie dopiero wtedy, gdy naprawdę musisz, bo utrudniają debugowanie.

Dlaczego nigdy nie dajesz nikomu *?

Node * daje wszystko, łącznie z node'ami pluginów, które zainstalujesz dopiero za miesiąc, i node'ami pomyślanymi właśnie jako wyjątek. Chodzi o uprawnienia bypass, dzięki którym ktoś buduje w poprzek regionów WorldGuard, o samo /lp, którym dosypie sobie jeszcze więcej, i o komendy zatrzymujące serwer albo kasujące jedną selekcją WorldEdit pół świata. Jedno zhakowane konto moderatora wystarczy wtedy, żeby stracić mapę.

To samo dotyczy op: przy wielu pluginach operatorzy w ogóle omijają sprawdzanie uprawnień, przez co LuckPerms nie jest już w stanie cię ochronić. Zasada brzmi więc: zdejmij op wszystkim, sobie też, i wszystko ustawiaj przez grupy. Zadbaj tylko o to, żeby zawsze mieć dostęp do konsoli jako wyjście awaryjne; w panelu Pterodactyl, który standardowo dostajesz przy hostingu Minecraft w MC-Node, masz ją w przeglądarce. Jeśli jako właściciel chcesz szerokiego dostępu, przydziel wildcard osobno dla każdego pluginu, na przykład worldedit.*, a obok trzymaj CoreProtect, żeby cofać błędy.

Czy edytor webowy jest wart zachodu?

Tak, to zdecydowanie największa oszczędność czasu, jaką daje LuckPerms. Wpisz /lp editor w konsoli albo na czacie, otwórz odesłany link i zobaczysz całą swoją strukturę uprawnień jako edytowalny przegląd: grupy obok siebie, node'y do zaznaczania lub przeciągania oraz parenty, weighty i konteksty w tym samym widoku. Po kliknięciu Apply dostajesz z powrotem komendę /lp applyedits <kod>, którą wklejasz na serwerze; dopiero wtedy cokolwiek się zmienia. Rozdzielenie pięćdziesięciu node'ów na pięć grup zajmuje w ten sposób kilka minut zamiast pół godziny wpisywania.

Dwa ostrzeżenia. Link to tajny adres do twoich danych o uprawnieniach, więc nie wklejaj go na publiczny kanał Discorda. I nie pracuj z dwóch kart naraz, bo nadpiszesz własne zmiany. Kopię zapasową robisz przez /lp export backup, co zapisuje w katalogu LuckPerms plik, który przywrócisz komendą /lp import.

Jak debugować uprawnienie, które nie działa?

Pracuj od góry do dołu, wtedy zwykle masz to w czterech krokach.

  1. /lp user Steve info — pokazuje grupę główną, wszystkie parenty, prefiks i node'y ustawione bezpośrednio na graczu. Najczęściej błąd siedzi już tutaj: gracz jest w innej grupie, niż myślałeś.
  2. /lp user Steve permission check essentials.home — podaje nie tylko true albo false, ale też skąd ta wartość pochodzi.
  3. /lp verbose on — widzisz na żywo, jakie node'y są naprawdę sprawdzane w chwili, gdy ktoś próbuje użyć komendy, łącznie z literówkami i node'ami nazywającymi się inaczej, niż zakładałeś. Wyłącz go przez /lp verbose off: na pełnym serwerze to wodospad.
  4. Node się zgadza, a dalej nie działa? Szukaj poza LuckPerms: czy gracz ma op, czy nie blokuje tego flaga WorldGuard, albo czy plugin nie ma własnego przełącznika w swoim configu?

Klasyki, które w ten sposób wyciągniesz na wierzch: drugi plugin uprawnień wciąż działający w tle, false wyżej w łańcuchu, zapomniany kontekst i node przemianowany w nowszej wersji pluginu.

Gdzie znajdziesz node'y danego pluginu?

Praktycznie każdy plugin dokumentuje swoje uprawnienia w trzech miejscach: na wiki projektu, na stronie pobierania w SpigotMC lub Modrinth oraz w pliku plugin.yml w jarze. To ostatnie źródło jest najpewniejsze, kiedy dokumentacja odstaje: jar to zwykły plik zip, więc możesz go otworzyć i przeczytać plugin.yml, a w nim komendy, ich node i wartość domyślną. Dynamicznie budowanych node'ów w stylu essentials.sethome.multiple.<grupa> tam nie ma; te wyciągniesz z dokumentacji albo z /lp verbose.

Najczęściej zadawane pytania

Czy LuckPerms działa tylko na Paper i Spigot? Nie. LuckPerms wychodzi nie tylko na Bukkit, Spigot, Paper i Purpur, ale też na Fabric, Forge i NeoForge, Sponge oraz na proxy Velocity i BungeeCord. Na serwerze z modpackiem też więc zadziała, choć mody dokumentują swoje uprawnienia zwykle mniej starannie, a część w ogóle opiera się na statusie op.

Czy oprócz LuckPerms potrzebuję Vault? Do samego LuckPerms nie. Vault to warstwa spajająca, dzięki której inne pluginy odczytują twoje rangi i prefiksy, na przykład plugin czatu dopisujący [VIP] przed nickiem. Jeśli prefiks nigdzie się nie pokazuje, zwykle brakuje Vaulta albo pluginu czatu, a nie uprawnienia.

Gdzie LuckPerms przechowuje moje rangi? Domyślnie w bazie plikowej w katalogu plugins/LuckPerms, co w zupełności wystarcza na pojedynczym serwerze. Jeśli prowadzisz kilka serwerów za proxy, przestaw LuckPerms na MySQL lub MariaDB, żeby wszystkie serwery czytały te same dane, a awans obowiązywał wszędzie naraz.

Czy LuckPerms obciąża serwer? Prawie wcale; sprawdzenie uprawnienia jest obsługiwane prosto z pamięci. Jeśli mimo to widzisz lagi, najpierw zmierz sparkiem, skąd się biorą, zamiast grzebać w uprawnieniach; w naszym artykule o optymalizacji serwera Minecraft opisujemy, jak się do tego zabrać.

Czy da się przejść ze starszego pluginu uprawnień? Tak, LuckPerms ma komendy migracyjne dla poprzedników takich jak GroupManager czy PermissionsEx. Potem naprawdę usuń stary plugin: dwa pluginy uprawnień naraz dają nieprzewidywalne wyniki i należą do najtrudniejszych do wytropienia usterek.

Warto przeczytać

// WYPRÓBUJ SAM
Twój serwer online w 60 sekund
MC-Node →