Вопрос Таймер luckperms

Можно конкретнее вопрос задать?
Иначе такое ощущение, будто вопрос касается не разработки, а использования PlaceholderAPI.

Ну он скорее всего имеет в виду ( плейсхолдер показывающий сколько время осталось до окончания привилегии LP )
Объединено

  • Установить
    Еще папи скачать

    /papi ecloud download LuckPerms
    Вы можете найти актуальный список заполнителей (плейсхолдеров) на .
 
Последнее редактирование:
Ну он скорее всего имеет в виду ( плейсхолдер показывающий сколько время осталось до окончания привилегии LP )
Объединено

  • Установить

    Вы можете найти актуальный список заполнителей на .
Нет, дописали аддон на основе лакпермс апи, не выводит время, тоесть он не распознает эту группу как временную
Объединено

Можно конкретнее вопрос задать?
Иначе такое ощущение, будто вопрос касается не разработки, а использования PlaceholderAPI.
Да ничего не работает, не скрипт на папи, не аддон по апи лакпермса
Объединено

Можно конкретнее вопрос задать?
Иначе такое ощущение, будто вопрос касается не разработки, а использования PlaceholderAPI.
Вот даже пример скрипта
Код:
var group = '%vault_rank%'

function format() {
    
    if (group == 'default') {
        return '' //Это если у игрока нет доната. Выводим пустоту, так как группа default не истекает.
    }

    var expires = '%luckperms_group_expiry_time_' + group + '%'
    if (expires == "") {
        return '∞'
    }

    return expires;
    
}

format()
 
Последнее редактирование:
а что он выводит? пустоту или скриптеррор?
Он не распознает группу как временную, выводит знак бесконечности
Тоесть знак бесконечности выводится для привлегий навсегда, а он ещё и на временные группы выводит знак бесконечности
 
Он не распознает группу как временную, выводит знак бесконечности
Тоесть знак бесконечности выводится для привлегий навсегда, а он ещё и на временные группы выводит знак бесконечности
может сам vault не распознает временную группу? попробуй в первой строке использовать заполнитель %luckperms_primary_group_name%
 
Будьте осторожны с рекомендациями этого пользователя.
может сам vault не распознает временную группу? попробуй в первой строке использовать заполнитель %luckperms_primary_group_name%
не-а
Объединено

может сам vault не распознает временную группу? попробуй в первой строке использовать заполнитель %luckperms_primary_group_name%
Всё так-же бесконечность выводит
 
Будьте осторожны с рекомендациями этого пользователя.
Нет, дописали аддон на основе лакпермс апи, не выводит время, тоесть он не распознает эту группу как временную
Объединено


Да ничего не работает, не скрипт на папи, не аддон по апи лакпермса
Объединено


Вот даже пример скрипта
Код:
var group = '%vault_rank%'

function format() {
   
    if (group == 'default') {
        return '' //Это если у игрока нет доната. Выводим пустоту, так как группа default не истекает.
    }

    var expires = '%luckperms_group_expiry_time_' + group + '%'
    if (expires == "") {
        return '∞'
    }

    return expires;
   
}

format()

Я сперва подумал, что вы делаете что-то не так. Но сам протестировав это я впал в ступор, потому что код JS абсолютно рабочий. Интересный факт - если заменить var expires = '%luckperms_group_expiry_time_' + group + '%' на var expires = '%luckperms_group_expiry_time_vip%' или другой любой донат, то всё заработает. Может быть какой-то баг или Placeholders API или LuckPerms или JS Expansion.

В общем, единственное адекватно-верное решение я нашел в написании своего аддона к Placeholders API. То есть, больше не нужно будет использовать никаких JS E. (хотя далее используем). Кода там на буквально две строчки, но вот если интересно:
Java:
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
    String playerGroup = PlaceholderAPI.setPlaceholders(player, "%vault_group%");
    return PlaceholderAPI.setPlaceholders(player, "%luckperms_group_expiry_time_" + playerGroup +"%");
}

В итоге мы получаем абсолютно рабочий плейсхолдер при вызове %rank_time%.
Вам необходимо зарегистрироваться для просмотра изображений-вложений

С которым мы кстати можем работать и помощью JS E. Например, изменить d,h,m,s на д,ч,м,с. Вот пример:
JavaScript:
function format() {
    
    var expires = "%rank_time%"
    
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
    
    return expires;
    
}

format()
В итоге получая это
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Приложу плагин снизу, надеюсь кому-то помог.
 

Вложения

  • RankTimePlaceholder-1.0.jar
    4.8 KB · Просмотры: 133
Я сперва подумал, что вы делаете что-то не так. Но сам протестировав это я впал в ступор, потому что код JS абсолютно рабочий. Интересный факт - если заменить var expires = '%luckperms_group_expiry_time_' + group + '%' на var expires = '%luckperms_group_expiry_time_vip%' или другой любой донат, то всё заработает. Может быть какой-то баг или Placeholders API или LuckPerms или JS Expansion.

В общем, единственное адекватно-верное решение я нашел в написании своего аддона к Placeholders API. То есть, больше не нужно будет использовать никаких JS E. (хотя далее используем). Кода там на буквально две строчки, но вот если интересно:
Java:
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
    String playerGroup = PlaceholderAPI.setPlaceholders(player, "%vault_group%");
    return PlaceholderAPI.setPlaceholders(player, "%luckperms_group_expiry_time_" + playerGroup +"%");
}

В итоге мы получаем абсолютно рабочий плейсхолдер при вызове %rank_time%.
Вам необходимо зарегистрироваться для просмотра изображений-вложений

С которым мы кстати можем работать и помощью JS E. Например, изменить d,h,m,s на д,ч,м,с. Вот пример:
JavaScript:
function format() {
   
    var expires = "%rank_time%"
   
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
   
    return expires;
   
}

format()
В итоге получая это
Вам необходимо зарегистрироваться для просмотра изображений-вложений

Приложу плагин снизу, надеюсь кому-то помог.
А можно как то сделать чтоб выводились только часы а когда остается меньше часа то только минуты а когда меньше минуты только секунды?
 
А можно как то сделать чтоб выводились только часы а когда остается меньше часа то только минуты а когда меньше минуты только секунды?
Конечно можно. Для этого нужно в скрипт добавить одну строчку, и по итогу скрипт будет слудующим:
JavaScript:
function format() {
    
    var expires = "%rank_time%";
    expires = expires.substring(0, 3);
    
    expires = expires.replace("y", "г");
    expires = expires.replace("w", "н");
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
    
    return expires;
    
}

format()

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

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

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

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


То есть, будет выводиться только первое число времени.
 
Конечно можно. Для этого нужно в скрипт добавить одну строчку, и по итогу скрипт будет слудующим:
JavaScript:
function format() {
   
    var expires = "%rank_time%";
    expires = expires.substring(0, 3);
   
    expires = expires.replace("y", "г");
    expires = expires.replace("w", "н");
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
   
    return expires;
   
}

format()

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

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

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

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


То есть, будет выводиться только первое число времени.
а куда это вставлять?
 
Конечно можно. Для этого нужно в скрипт добавить одну строчку, и по итогу скрипт будет слудующим:
JavaScript:
function format() {
   
    var expires = "%rank_time%";
    expires = expires.substring(0, 3);
   
    expires = expires.replace("y", "г");
    expires = expires.replace("w", "н");
    expires = expires.replace("d", "д");
    expires = expires.replace("h", "ч");
    expires = expires.replace("m", "м");
    expires = expires.replace("s", "с");
   
    return expires;
   
}

format()

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

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

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

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


То есть, будет выводиться только первое число времени.


Привет, а может подскажешь как можно изменить формат времени? Перелазил по js форумам в поисках решения.
Я нашел не много интересней решение, но результат тот же самый. Единственное что не могу разобрать как можно поменять формат отображения оставшегося времени?
Тоесть, в переменную expires мы получаем к примеру "4недели 2дня 4часа 59м 59с" на человеческий язык 30дней. Как сделатать так что бы преобразовать в человеческое отображение? "30д" вместо "4недели 2дня 4часа 59м 59с". Думал может есть какие-то parse для такого случая, но догадываюсь что тут в другом дело и есть наверняка очень простой способ. Может знаешь ответ на данный вопрос?
ВАЖНО как отформатировать что бы выводило к примеру "4н" или "23ч" я разобрался. Интересует имеенно свести получаемую дату к единому формату - к дням.
Объединено

А для того что бы код работал и отображал время, достаточно просто подавать другой запрос:
var group = "%luckperms_highest_group_by_weight%";
А таким образом находим оставшееся время:
var expires = PlaceholderAPI.static.setPlaceholders(BukkitPlayer, '%luckperms_group_expiry_time_' + group + '%')
 
Назад
Сверху Снизу