Notatki operatora
LuckPerms: konfiguracja uprawnień na serwerze Minecraft
Praktyczny przewodnik po LuckPerms: od instalacji na Paper, Spigot i Velocity, przez grupy default/vip/admin, nadawanie uprawnień i dziedziczenie, po prefiksy z meta, edytor web i wybór bazy H2 albo MySQL. Z perspektywy kogoś, kto już raz tłumaczył graczowi, dlaczego „mam VIP-a, a komenda nie działa”.
W skrócie: LuckPerms to dziś standardowy system uprawnień na serwerach Minecraft, zastępuje ręcznie klepane permissions.yml i stary PermissionsEx. Tworzysz grupy (np. default, vip, admin), nadajesz im uprawnienia komendą lp group ... permission set, a graczy przypisujesz do grup przez lp user ... parent add. Dziedziczenie i wagi (weight) decydują, która grupa wygrywa przy konflikcie. Na jeden serwer wystarczy wbudowana baza H2; przy sieci serwerów za proxy przejdź na MySQL i włącz synchronizację. Edytor web (lp editor) ratuje przy większych zmianach.
Czym jest LuckPerms i po co go używać
LuckPerms to plugin zarządzający uprawnieniami, czyli decydujący o tym, kto może użyć jakiej komendy i jakiej funkcji na serwerze. Sam w sobie nie dodaje żadnych komend gry; daje za to warstwę, na której opierają się prawie wszystkie inne pluginy. Kiedy gracz wpisuje /home, plugin domów pyta LuckPerms: „czy ten gracz ma uprawnienie essentials.home?”. LuckPerms odpowiada tak albo nie, a reszta dzieje się po stronie tamtego pluginu.
Zanim LuckPerms stał się standardem, uprawnienia trzymało się w plikach takich jak permissions.yml albo w konfiguracji PermissionsEx. To działało, ale miało dwie wady, które każdy operator zna na pamięć: jedna źle postawiona spacja w YAML potrafiła wywalić całą konfigurację, a każda zmiana wymagała ręcznej edycji pliku i przeładowania. LuckPerms przenosi to wszystko do bazy danych i pozwala zarządzać uprawnieniami komendami w grze albo przez przeglądarkę, ze zmianami widocznymi od razu, bez restartu serwera.
Najważniejsze powody, dla których warto na niego przejść:
- Grupy i dziedziczenie. Nadajesz uprawnienia grupie raz, a wszyscy jej członkowie je dostają. Grupa vip może dziedziczyć po default, więc dopisujesz tylko to, co VIP ma ekstra.
- Brak ręcznego YAML. Wszystko ustawiasz komendami albo w edytorze web, więc znika cała klasa błędów związanych z wcięciami i literówkami.
- Konteksty. To samo uprawnienie może działać inaczej na lobby i na survivalu, bo LuckPerms rozumie kontekst serwera i świata.
- Synchronizacja w sieci serwerów. Przy proxy i wspólnej bazie zmiana rangi rozchodzi się na wszystkie serwery naraz.
Instalacja
LuckPerms ma osobne wersje pod różne platformy i to pierwsza rzecz, którą trzeba dobrze trafić. Pobierz właściwy build ze strony projektu:
- Paper / Spigot (a także Fabric i Forge) to wersja serwerowa. Plik
.jarwrzucasz do kataloguplugins(lubmodsprzy Fabric/Forge) i restartujesz serwer. - Velocity / BungeeCord to wersja pod proxy. Trafia do katalogu pluginów samego proxy. Uwaga: to inny plik niż wersja serwerowa, nie podmieniaj ich miejscami.
Sama instalacja na pojedynczym serwerze sprowadza się do trzech kroków: wrzuć właściwy .jar do plugins, zrestartuj serwer, sprawdź komendą lp info, czy plugin wstał i jaką bazę danych załadował. Przy starcie LuckPerms domyślnie tworzy sobie lokalną bazę H2 i grupę default, więc od razu masz na czym pracować.
Jeśli budujesz sieć serwerów za proxy, schemat jest taki: wersja proxy ląduje na Velocity albo BungeeCord, a wersja serwerowa na każdym backendzie (lobby, survival, minigry). Żeby wszystkie te instancje widziały te same grupy i rangi, muszą celować w jedną bazę MySQL, o czym niżej. Bez wspólnej bazy każdy serwer ma własny, oddzielny zestaw uprawnień, co prawie zawsze nie jest tym, czego chcesz.
Podstawy: grupy, uprawnienia i gracze
Cała filozofia LuckPerms opiera się na grupach. Zamiast nadawać uprawnienia każdemu graczowi z osobna, definiujesz kilka ról i przypisujesz do nich ludzi. Typowy zestaw na start:
- default to grupa, do której trafia każdy nowy gracz. Tu dajesz podstawowe uprawnienia, których ma mieć absolutnie każdy (np.
/spawn,/help). - vip to gracze wspierający serwer. Dziedziczy po default i dokłada bonusy: więcej domów, dostęp do kosmetyków, kolorowy czat.
- admin to ekipa. Dziedziczy zwykle po niższych rangach i dostaje uprawnienia administracyjne oraz, świadomie, znak wieloznaczny tam, gdzie ma sens.
Nadawanie uprawnień grupie
Uprawnienie nadajesz grupie komendą:
lp group vip permission set essentials.fly truenadaje grupie vip uprawnienie do latania.lp group vip permission set essentials.fly falsejawnie odbiera to uprawnienie (przydatne, gdy grupa dziedziczy je skądś, a chcesz zablokować).lp group vip permission unset essentials.flyusuwa wpis w ogóle, wracając do wartości odziedziczonej lub domyślnej.
Różnica między set ... false a unset jest kluczowa: pierwsze to twarda blokada wygrywająca z dziedziczeniem, drugie to po prostu „nie mam zdania, zdecyduj wyżej”.
Dodawanie graczy do grup
Gracza przypisujesz do grupy jako rodzica (parent):
lp user Steve parent add vipdodaje graczowi Steve grupę vip.lp user Steve parent remove vipzabiera mu tę grupę.lp user Steve parent set vipustawia vip jako jedyną grupę, czyszcząc poprzednie przypisania.
Możesz też nadać pojedyncze uprawnienie bezpośrednio graczowi przez lp user Steve permission set ..., ale rób to oszczędnie. Uprawnienia per gracz są trudne do ogarnięcia przy większej ekipie; grupy są po to, żeby się nie pogubić.
Dziedziczenie i wagi (weight)
Grupy układają się w drabinę. Jeśli vip dziedziczy po default, a admin po vip, to admin dostaje wszystko z dołu plus własne dodatki. Dziedziczenie ustawiasz dokładnie tak jak u gracza, tyle że na grupie: lp group vip parent add default.
Problem zaczyna się przy konflikcie, gdy dwie grupy nadają temu samemu uprawnieniu różne wartości albo różny prefiks. Rozstrzyga to waga (weight). Grupa o wyższej wadze wygrywa. Wagę ustawiasz przez lp group admin setweight 100. W praktyce warto od razu rozplanować widełki, np. default = 0, vip = 10, moderator = 50, admin = 100, żeby nigdy nie zgadywać, czyj prefiks pokaże się graczowi należącemu do dwóch grup naraz.
Prefiksy i sufiksy z meta
Prefiks (np. [VIP] przed nazwą) i sufiks to nie są zwykłe uprawnienia, tylko metadane. Ustawiasz je osobno:
lp group vip meta setprefix "&6[VIP] &f"ustawia złoty prefiks z białym tekstem po nim.lp group admin meta setsuffix "&c [ADMIN]"dokłada czerwony sufiks.
Tu jedna rzecz, która myli wielu początkujących: sam LuckPerms tylko przechowuje prefiks. To, czy zobaczysz go na czacie albo w tablicy graczy (TAB), zależy od pluginu czatu lub tablicy, który te metadane odczyta, czy to natywnie, czy przez Vault. Jeśli prefiks „nie działa”, prawie zawsze problem leży po stronie pluginu wyświetlającego, a nie LuckPerms.
Najważniejsze komendy
W praktyce 90% pracy załatwisz kilkunastoma komendami. Prefiks /lp to skrót od /luckperms, oba działają tak samo.
| Komenda | Co robi |
|---|---|
lp info | Pokazuje wersję pluginu i aktywną bazę danych (H2/MySQL). |
lp editor | Generuje jednorazowy link do edytora web do zarządzania wszystkim w przeglądarce. |
lp group <grupa> permission set <uprawnienie> true | Nadaje grupie uprawnienie. |
lp group <grupa> permission unset <uprawnienie> | Usuwa uprawnienie z grupy. |
lp group <grupa> permission info | Listuje wszystkie uprawnienia grupy. |
lp group <grupa> parent add <rodzic> | Ustawia dziedziczenie po innej grupie. |
lp group <grupa> setweight <liczba> | Ustawia wagę grupy (wyższa wygrywa przy konflikcie). |
lp group <grupa> meta setprefix "..." | Ustawia prefiks grupy. |
lp user <gracz> parent add <grupa> | Dodaje gracza do grupy. |
lp user <gracz> parent set <grupa> | Ustawia grupę jako jedyną dla gracza. |
lp user <gracz> info | Pokazuje grupy i uprawnienia konkretnego gracza, najlepsze narzędzie do diagnozy. |
lp creategroup <nazwa> | Tworzy nową grupę. |
lp sync | Wymusza synchronizację z bazą (przydatne przy sieci serwerów). |
Edytor web i baza danych
Przy większych zmianach komendy w czacie szybko stają się męczące. Tu wchodzi lp editor: wpisujesz tę komendę, dostajesz jednorazowy link do edytora w przeglądarce, klikasz, przeciągasz, zaznaczasz uprawnienia, a po zapisaniu zmiany wracają na serwer jednym kliknięciem. Link jest tymczasowy i działa tylko dla Twojej sesji, więc nie współdziel go publicznie. Dla porządkowania całej drabiny grup czy masowego dodawania uprawnień to znacznie wygodniejsze niż wklepywanie dziesiątek komend.
Drugi temat to wybór bazy danych, i to decyzja, którą warto podjąć świadomie na starcie:
- H2. Domyślna, wbudowana baza plikowa. Nie wymaga niczego konfigurować, działa od razu. Idealna dla pojedynczego serwera. Wada: jest lokalna, więc dwa procesy nie mogą z niej korzystać jednocześnie, czyli odpada przy sieci serwerów.
- MySQL / MariaDB. Zewnętrzna baza, do której podłączasz wszystkie instancje (proxy plus każdy backend). Dzięki temu jeden zestaw grup i rang obowiązuje na całej sieci. Konfigurujesz ją w
config.ymlLuckPerms, sekcjastorage-method: mysqlplus dane dostępowe.
Przy sieci serwerów na MySQL koniecznie włącz też messaging (np. tryb sql albo zewnętrzny kanał), żeby zmiana rangi na jednym serwerze od razu rozeszła się na pozostałe. Bez tego każdy serwer odczyta zmianę dopiero przy następnym przeładowaniu lub po komendzie lp sync, a gracz zobaczy nową rangę dopiero po przelogowaniu na inną instancję.
Z doświadczenia: zanim zaczniesz budować drabinę grup, zrób kopię katalogu LuckPerms i wyeksportuj konfigurację komendą lp export nazwa-pliku. Eksport zapisuje wszystkie grupy, uprawnienia i przypisania do jednego pliku, który potem wgrasz na nowym serwerze albo po awarii bazy komendą lp import. Przy migracji z H2 na MySQL ten sam mechanizm przenosi całą konfigurację bez przepisywania komend ręcznie.
Typowe problemy
- Gracz nie ma uprawnień, choć jest w grupie. Sprawdź po kolei:
lp user gracz info(czy faktycznie należy do grupy),lp group nazwa permission info(czy grupa ma to uprawnienie) i czy nie ma gdzieśset ... falsewygrywającego przez wagę. Pamiętaj, że status OP omija sprawdzanie uprawnień, więc testuj na koncie bez OP, inaczej wszystko „działa” fałszywie. - Kolizja z innym pluginem uprawnień. Nigdy nie trzymaj jednocześnie LuckPerms i drugiego systemu (PermissionsEx, GroupManager, UltraPermissions). Dwa pluginy walczące o te same uprawnienia dają nieprzewidywalne wyniki. Usuń stary, zaimportuj dane do LuckPerms i zostaw tylko jeden.
- Prefiks nie pokazuje się na czacie. LuckPerms tylko przechowuje meta. Wyświetlanie zapewnia plugin czatu lub tablicy. Sprawdź, czy taki plugin jest zainstalowany i poprawnie spięty z LuckPerms (natywnie albo przez Vault).
- Uprawnienie działa na jednym serwerze, na drugim nie. To kwestia kontekstów. Uprawnienie nadane dla
server=lobbynie zadziała na survivalu. Albo nadaj je globalnie, albo świadomie ustaw właściwy kontekst. - Zmiany nie rozchodzą się po sieci serwerów. Przy MySQL bez włączonego messaging każdy serwer ładuje dane tylko przy starcie lub
lp sync. Włącz messaging, żeby zmiany propagowały się natychmiast.
Jeśli zarządzasz pojedynczym serwerem i nie chcesz samodzielnie pilnować Javy, wersji pluginów i bazy danych, gotowy zarządzany hosting Minecrafta (Java) z obsługą pluginów pozwala wgrać LuckPerms przez panel i menedżer plików, bez grzebania w konfiguracji serwera od zera.
Najczęstsze pytania
Czym LuckPerms różni się od starego permissions.yml?
permissions.yml i PermissionsEx to ręczna edycja YAML, podatna na literówki i błędy wcięć. LuckPerms trzyma wszystko w bazie danych, pozwala zarządzać komendami lub przez edytor web bez restartu i dodaje dziedziczenie, wagi oraz konteksty. To dziś standard.
Czy LuckPerms działa na Velocity i BungeeCord?
Tak, ma osobny build pod proxy. Wersja proxy idzie na Velocity/BungeeCord, a wersje serwerowe na każdy backend. Żeby współdzielić grupy, wszystkie instancje muszą celować w jedną bazę MySQL z włączoną synchronizacją.
Gracz dołączył do grupy, ale dalej nie ma uprawnień. Dlaczego?
Sprawdź lp user gracz info i lp group nazwa permission info, zwróć uwagę na konteksty i wpisy false. Testuj na koncie bez OP, bo operator omija sprawdzanie uprawnień.
H2 czy MySQL: którą bazę wybrać?
H2 wystarczy dla pojedynczego serwera i nie wymaga konfiguracji. MySQL/MariaDB wybierasz przy sieci serwerów za proxy, żeby współdzielić grupy; włącz wtedy messaging dla natychmiastowej synchronizacji.
Jak ustawić prefiks i kolor nazwy gracza?
Prefiks to meta, nie uprawnienie. Ustawiasz go przez lp group nazwa meta setprefix z kodami kolorów. Wyświetlanie zapewnia plugin czatu lub tablicy odczytujący meta z LuckPerms.