1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Получить строку права от LuckPerms

Тема в разделе "Разработка плагинов для новичков", создана пользователем perezzloy, 22 июл 2020.

Метки:
Статус темы:
Закрыта.
  1. Автор темы
    perezzloy

    perezzloy Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Bagomot
    Здравствуйте!
    Перебрался таки я наконец то на LuckPerms, но вот есть у меня плагин, который завязан на PermissionEX. Стало быть хочу я в него добавить подхват LP, но не хватает мне знаний. Поэтому прошу помощи у вас.

    Есть у меня в плагине право вроде myplugin.node.3, где цифра может быть любой, и её мне нужно получить в моем плагине, чтобы обработать.

    С PEX я делал так:
    Код:
    PermissionUser user = PermissionsEx.getUser(player);
    int test;
    for (String per : user.getPermissions(player.getLocation().getWorld().getName())) {
       if (per.contains("myplugin.node.")) {
          String[] sb = per.split("\\.");
          try  {
             test = Integer.parseInt(sb[2]);
          }
          catch(NumberFormatException e) {}
       }
    }
    То есть элементарно. Но вот с LP так не получается. Да я получил экземпляр API и даже сделал
    Код:
    User user = api.getUserManager().getUser(player.getUniqueId());
    А что дальше? Как мне получить право (если есть) и вытащить из него цифру?
    Еще я слышал про контексты в LP, но плохо понял что они такое и как их использовать. Может быть тут они подойдут?

    В общем, прошу подсказать мне адекватный вариант.

    P.S.: Да, я смотрел документацию, да я погуглил, не помогло.
     
  2. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Вроде можно воспользоваться баккитовским Player#getEffectivePermissions.
    Плохо смотрел. Если прям нужно через LP - User#getNodes(NodeType.PERMISSION), далее просто через for-each сравниваешь PermissionNode#getPermission() со своим.

    А вообще, это определенно неправильное использование системы прав, и где-то ты свернул не туда. Впрочем, не мне судить.
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Пермишенсы явно не для такого ивзращения придуманы.
     
  4. Автор темы
    perezzloy

    perezzloy Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Bagomot
    Спасибо за ответы. Мне подсказали, что в бакките есть getEffectivePermissions().
    Получил
    Код:
    Set<PermissionAttachmentInfo> perms = player.getEffectivePermissions();

    и далее разобрал просто в цикле.
    Заодно вообще избавился от жесткой зависимости LP или PEX.
     
Статус темы:
Закрыта.

Поделиться этой страницей