Когда Вы перешли с bukkit на sponge, Вы настроили свой сервер, поставили некоторые базовые плагины, например Nucleus, Luckperms и еще какие-нибудь, настроили пермишены, проверили всё, запустили игроков. Вроде бы всё работало, но через некоторое время Вы обнаружили странности!
Например после входа администратора с пермишеном *
, он был невидимый?
Если это так, то этот туториал для Вас!
Представим плагин, у которого есть такие пермишены:
1. myplugin.command.give
<- доступ к команде give
2. myplugin.command.clear
<- доступ к команде clear
3. myplugin.command.teleport
<- доступ к команде teleport
4. myplugin.infiniteair
<- бесконечный кислород
Как мы будем добавлять пермишены в bukkit? Достаточно просто, для доступа к какой-либо команде нужно выдать пермишен myplugin.command.*
, а для доступа ко всем возможностям необходимо выдать myplugin.*
ну или просто *
.
В sponge они работает абсолютно по-другому! В sponge нет такой конструкции как *
или же myplugin.command.*
.
Так как же они работают?
Пермишены в sponge - это дерево. Представим, что Вы выдали пермишен myplugin.command
- это эквивалент myplugin.command.*
из bukkit.
Допустим Вы хотите дать доступ ко всем возможностям плагина - достаточно выдать пермишен myplugin
.
Я думаю, у Вас появился вопрос - почему же тогда выдача пермишена с *
работает? А вот почему! Это на 100% зависит от плагина, который отвечает за пермишены. Самый распространённый плагин для пермишенов для sponge - Luckperms, он-то и поддерживает данную конструкцию.
Вернёмся к вопросу, который мы задали в самом начале - почему администратор после входа невидимый?
Обратимся к списку пермишенов Nucleus - https://nucleuspowered.org/docs/permissions.html
В документации сказано, что если выдать пермишен nucleus.vanish.onlogin
, то после входа игрок будет невидимым! Так-как Вы скорее всего выдали пермишен *
, nucleus.*
, nucleus
или nucleus.vanish
и т. п., то проверка на наличие этого пермишена возвращала положительный ответ, поэтому-то и был администратор невидимым. Проблема была в наличии этого пермишена, а не в каком-нибудь баге.