Вопрос Как реализовать время luckperms

BaySirak

Заблокирован
Сообщения
110
Плагин
Luckperms
Ядро сервера
  1. Purpur
Версия сервера
  1. 1.20
Как реализовать такое, стандартные плейсхолдеры не помогают( выводят полностью время, включая секунды), а надо как на скриншоте
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Решение
Готово.

Код:
    @Override
    public String onRequest(OfflinePlayer player, @NotNull String spigotmcru) {
        User user = LuckPermsProvider.get().getUserManager().getUser(Objects.requireNonNull(player.getName()));
        for (Node node : user.getNodes()) {
            if (node.getKey().startsWith("group.") && Objects.nonNull(node.getExpiryDuration())) {
                return node.getExpiryDuration().toDays() + "д.";
            }
            else if (node.getKey().startsWith("group.") && !Objects.nonNull(node.getExpiryDuration())) {
                return "∞";
            }
        }
        return null;
    }
Спасибо большое)
Объединено

Готово.

Код:
    @Override
    public String onRequest(OfflinePlayer player, @NotNull String spigotmcru) {
        User user = LuckPermsProvider.get().getUserManager().getUser(Objects.requireNonNull(player.getName()));
        for (Node node : user.getNodes()) {
            if (node.getKey().startsWith("group.") && Objects.nonNull(node.getExpiryDuration())) {
                return node.getExpiryDuration().toDays() + "д.";
            }
            else if (node.getKey().startsWith("group.") && !Objects.nonNull(node.getExpiryDuration())) {
                return "∞";
            }
        }
        return null;
    }
заметил такую особенность, что если у тебя донат выше, того который выпал из кейса, время всё равно прибавиться
Например :
Донат Принц, выше чем страж. Если у тебя принц и выпадет страж, то к принцу все равно прибавиться время стража, при этом срок принца так и остаётся 1 мес.
Объединено

Вам необходимо зарегистрироваться для просмотра изображений-вложений
вот герой у меня на 1 месяц. Но к нему прибавилось время стража(страж ниже героя)
 
Последнее редактирование:
Спасибо большое)
Объединено


заметил такую особенность, что если у тебя донат выше, того который выпал из кейса, время всё равно прибавиться
Например :
Донат Принц, выше чем страж. Если у тебя принц и выпадет страж, то к принцу все равно прибавиться время стража, при этом срок принца так и остаётся 1 мес.
Объединено

Вам необходимо зарегистрироваться для просмотра изображений-вложений
вот герой у меня на 1 месяц. Но к нему прибавилось время стража(страж ниже героя)

Очень странно. Сложения в плагине вообще нет. Это уже проблема распределения прав.

У Вас донаты наследуют права от прошлых?
 
Очень странно. Сложения в плагине вообще нет. Это уже проблема распределения прав.

У Вас донаты наследуют права от прошлых?
Да
Объединено

хм, попробую сейчас сделать без унаследования
Объединено

Очень странно. Сложения в плагине вообще нет. Это уже проблема распределения прав.

У Вас донаты наследуют права от прошлых?
убрал унаследование, всё равно такое же происходит)
 
Последнее редактирование:
Попробуйте использовать settemp вместо addtemp.
Попробую
Объединено

Вам необходимо зарегистрироваться для просмотра изображений-вложений

К сожалению
 
Последнее редактирование:
Попробую
Объединено

Вам необходимо зарегистрироваться для просмотра изображений-вложений

К сожалению

Используйте /lp user {игрок} permission settemp group.voin true 1d
 
не помогло
Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Объединено

типо не заменился даже)
 
Последнее редактирование:
не помогло
Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений
не помогло
Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Объединено

типо не заменился даже)

Я правильно понимаю, что суммирование времени происходит когда наследуются одновременно несколько донатов?
Т.е. выполняется /lp user юзер parent addtemp донат 30d и /lp user юзер parent addtemp донат2 30d
 
Я правильно понимаю, что суммирование времени происходит когда наследуются одновременно несколько донатов?
Т.е. выполняется /lp user юзер parent addtemp донат 30d и /lp user юзер parent addtemp донат2 30d
Да, нужно сделать скорее всего время прямо унаследованое, а не косвенно
Объединено

Вам необходимо зарегистрироваться для просмотра изображений-вложений
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Рыцарь по приоритету, ниже воина, но дни всё равно суммируются
Объединено

Нашёл эту страницу, мб чем нибудь
 
Последнее редактирование:
А если не использовать параметр accumulate? Ведь поэтому время-то и суммируется.
У меня на сервере всё отлично считает
Объединено

У меня на сервере привилегии также наследуют права друг от друга. Вот пример двух привилегий, архитектор ниже командора.

Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
Последнее редактирование:
А если не использовать параметр accumulate? Ведь поэтому время-то и суммируется.
У меня на сервере всё отлично считает
Объединено

У меня на сервере привилегии также наследуют права друг от друга. Вот пример двух привилегий, архитектор ниже командора.

Вам необходимо зарегистрироваться для просмотра изображений-вложений
Он объединяет время и увеличивает его, чтобы игрок когда выбил ещё раз, ему снова далось оно?
 
Он объединяет время и увеличивает его, чтобы игрок когда выбил ещё раз, ему снова далось оно?

Используйте вместо этого temporary-add-behaviour: accumulate в config.yml LuckPerms'а, а команда выдачи - lp user {игрок] parent addtemp voin 30d
 
Используйте вместо этого temporary-add-behaviour: accumulate в config.yml LuckPerms'а, а команда выдачи - lp user {игрок] parent addtemp voin 30d
Крч, решил не умничать и просто сделать так.
Вам необходимо зарегистрироваться для просмотра изображений-вложений
и также только на 3 месяца, и всё, как повезёт получается
 
Готово.

Код:
    @Override
    public String onRequest(OfflinePlayer player, @NotNull String spigotmcru) {
        User user = LuckPermsProvider.get().getUserManager().getUser(Objects.requireNonNull(player.getName()));
        for (Node node : user.getNodes()) {
            if (node.getKey().startsWith("group.") && Objects.nonNull(node.getExpiryDuration())) {
                return node.getExpiryDuration().toDays() + "д.";
            }
            else if (node.getKey().startsWith("group.") && !Objects.nonNull(node.getExpiryDuration())) {
                return "∞";
            }
        }
        return null;
    }
А можно пожалуйста полный исходный код?
 
Готово.

Код:
    @Override
    public String onRequest(OfflinePlayer player, @NotNull String spigotmcru) {
        User user = LuckPermsProvider.get().getUserManager().getUser(Objects.requireNonNull(player.getName()));
        for (Node node : user.getNodes()) {
            if (node.getKey().startsWith("group.") && Objects.nonNull(node.getExpiryDuration())) {
                return node.getExpiryDuration().toDays() + "д.";
            }
            else if (node.getKey().startsWith("group.") && !Objects.nonNull(node.getExpiryDuration())) {
                return "∞";
            }
        }
        return null;
    }
Можешь сказать чё за плейсхолдер?
 
Можешь сказать чё за плейсхолдер?


Проект плейсхолдера, его код, описание установки и прочее доступны на гитхабе по данной ссылке:
Объединено

А можно пожалуйста полный исходный код?

Скинул проект на гитхабе сообщением выше
 
Добрый вечер, помогите пожалуйста, когда указываю плейсхолдер в скорборде и табе, то он не работает(
Вам необходимо зарегистрироваться для просмотра изображений-вложений


Когда вставляю в другое место, то вс е работает.
Плагин на таб и скорборд - TAB
 
Доброе утро.
Прошу прощения за бесполезный совет :(.
Если этот плагин не помогает, хотя, видимо он и не поможет, т.к. принимает только числа, то выходом является лишь написание expansion'a.
Я могу Вам с этим помочь. В ближайшее время пришлю сюда готовое решение, как только напишу его.
Объединено

Написал expansion.
Загрузите его по пути /plugins/PlaceholderAPI/expansions
После чего пропишите команду /papi register Expansion-expirytime.jar или перезагрузите сервер.
Используйте как %expirytime_<группа>%
Плейсхолдер возвращает количество дней до истечения привилегии.
Рад был помочь! :)

Java:
@Override
    public String onRequest(OfflinePlayer player, @NotNull String group) {
        Set<Group> groups = LuckPermsProvider.get().getGroupManager().getLoadedGroups();
        for (Group grp : groups) {
            if (grp.getName().equals(group)) {
                User user = LuckPermsProvider.get().getUserManager().getUser(Objects.requireNonNull(player.getName()));
                assert user != null;
                for (Node node : user.getNodes()) {
                    if (node.getKey().equals("group." + group) && Objects.nonNull(node.getExpiryDuration())) {
                        return Long.toString(node.getExpiryDuration().toDays());
                    }
                }
                return "Группа не найдена!";
            }
        }
        return null;
хай не особо понял какой плейсхолдр нужен типо написано <группа> но ведь это только на одну
Объединено

Доброе утро.
Прошу прощения за бесполезный совет :(.
Если этот плагин не помогает, хотя, видимо он и не поможет, т.к. принимает только числа, то выходом является лишь написание expansion'a.
Я могу Вам с этим помочь. В ближайшее время пришлю сюда готовое решение, как только напишу его.
Объединено

Написал expansion.
Загрузите его по пути /plugins/PlaceholderAPI/expansions
После чего пропишите команду /papi register Expansion-expirytime.jar или перезагрузите сервер.
Используйте как %expirytime_<группа>%
Плейсхолдер возвращает количество дней до истечения привилегии.
Рад был помочь! :)

Java:
@Override
    public String onRequest(OfflinePlayer player, @NotNull String group) {
        Set<Group> groups = LuckPermsProvider.get().getGroupManager().getLoadedGroups();
        for (Group grp : groups) {
            if (grp.getName().equals(group)) {
                User user = LuckPermsProvider.get().getUserManager().getUser(Objects.requireNonNull(player.getName()));
                assert user != null;
                for (Node node : user.getNodes()) {
                    if (node.getKey().equals("group." + group) && Objects.nonNull(node.getExpiryDuration())) {
                        return Long.toString(node.getExpiryDuration().toDays());
                    }
                }
                return "Группа не найдена!";
            }
        }
        return null;
хай не особо понял какой плейсхолдр нужен типо написано <группа> но ведь это только на
Сегодня, попробую, обязательно отвечу?
Объединено

Попробовал, всё работает, но мне же нужно это для всех привилегий вывести) А если вставлять плейсхолдер для всех привилегий, то в табе соответственно будет написано, группа не найдена
хай не особо понял какой плейсхолдр нужен типо написано <группа> но ведь это только на одну
 
Назад
Сверху Снизу