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

Решено Заменить слово, которое выводит плейсхолдер на своё

Тема в разделе "Помощь", создана пользователем _MrJaycob_, 27 ноя 2020.

  1. Автор темы
    _MrJaycob_

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

    Баллы:
    76
    Имя в Minecraft:
    JaycobYT
    Всем привет!

    Интересует такая вещь. Можно ли изменить слово, которое выводится плейхолдером? Допустим, есть плейсхолдер %player_gamemode% и он выводит "SURVIVAL". Можно ли это слово заменить на "Выживание"?

    При этом, без какого-либо программирование или самописов. Можно ли так сделать? Видел плейсхолдер %javascript ..% может через него это как-то осуществляется?
     
  2. HauserGrim

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

    Баллы:
    96
    В плагине TAB видел нечто похожее, но это распространяется только на него. Самопис (расширение), либо попробовать через расширение JavaScript, но во втором я не уверен, но гайдики почитать стоит.
     
  3. Автор темы
    _MrJaycob_

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

    Баллы:
    76
    Имя в Minecraft:
    JaycobYT
    Понятно. Сижу гуглю, пока особо ничего не нашёл
     
  4. Saharo4ek

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

    Баллы:
    96
    Имя в Minecraft:
    tin
    А зачем париться с его заменой, вот смысл? Ставишь на вьюв рекьюмент этот плейс и выводишь в лор это свое "Выживание" при соблюдении условия.
     
  5. Автор темы
    _MrJaycob_

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

    Баллы:
    76
    Имя в Minecraft:
    JaycobYT
    Ну это само собой, один из самых простых способов, однако, если нужно выводить плейсхолдер не только в меню, а ещё, допустим, на голограмме или ещё где-то, то не подойдёт
     
  6. Автор темы
    _MrJaycob_

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

    Баллы:
    76
    Имя в Minecraft:
    JaycobYT
    Решение

    Хорошо погуглив, решил проблему. Может кому-то пригодится, что нужно сделать:

    • Устанавливаем расширение "Javascript" для PlaceholderAPI: /papi ecloud download Javascript, /papi reload
    • В папке PlaceholderAPI появляется файл javascript_placeholders.yml. В нём подключаем файл с нашим будущим скриптом изменения плейсхолдера:

    Код:
    check_item:
    
      file: check_item.js

    • Переходим в папку javascripts (Находится в PlaceholderAPI/javascripts) и теперь создаём файл check_item.js (Название должно отвечать тому, что в javascript_placeholders.yml)

    • Теперь нужен скрипт. Для примера я решил изменить плейсхолдер %checkitem_mat:EMERALD% который проверяет, есть ли в инвентаре игрока изумруд. Если да, он выводит "
    yes", если нет "no". Я хочу эти два значения изменить на "Есть" и "Нет". Для этого используем этот скрипт:

    Код:
    var ItemData = args[0];
    var placeholder = "checkitem_mat:" + ItemData;
    var hasItem = PlaceholderAPI.static.setPlaceholders(BukkitPlayer, "%" + placeholder + "%");
    
    function itemCheck(){
      if(hasItem == "yes"){
          return "&eЕсть";
      }
      else {
          return "&cНет";
      }
    }
    
    itemCheck();

    • Сохраняем файл, перезагружаем PAPI: /papi reload
    • Готово. Теперь где нам нужно устанавливаем плейсхолдер %javascript_check_item_ВЕЩЬ% (Например, %javascript_check_item_EMERALD%) и получаем на выходе либо "Есть", либо "Нет"

    P.s. Если нужно изменить, к примеру тот же плейсхолдер %player_gamemode%, то тут скрипт проще:

    Код:
    var placeholder = "%player_gamemode%";
    
    function gamemodeCheck(){
      if(placeholder == "CREATIVE"){
          return "Креатив";
      }
      else if (placeholder == "SURVIVAL"){
          return "Выживание";
      }
      else {
          return "Наблюдатель";
      }
    }
    
    gamemodeCheck();

    Инфу брал отсюда: https://github.com/PlaceholderAPI/Javascript-Expansion/wiki/Advanced-Scripts
     
    Последнее редактирование: 27 ноя 2020
  7. alexandrage

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

    Баллы:
    173
    PlaceholderAPI юзать не? Зачем тебе эти костыли с js?
     
  8. Saharo4ek

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

    Баллы:
    96
    Имя в Minecraft:
    tin
    Это один из модулей PlaceholderAPI...
     
  9. alexandrage

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

    Баллы:
    173
    Их легко писать, и без костылей с js.
     
  10. Saharo4ek

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

    Баллы:
    96
    Имя в Minecraft:
    tin
    Какие костыли? Данная возможность предусмотрена как раз для таких случаев.
     
  11. Arizonafraps

    Arizonafraps Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    Johirok
    А можешь сказать более подробней про TAB, там возможно сделать?
     
    Последнее редактирование: 4 ноя 2022
  12. Nextler

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

    Баллы:
    76
    Имя в Minecraft:
    NEXXTLER
    При помощи Rocket Placeholder можно такое сделать
     

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