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

Помогите Создание плейсхолдера (PAPI)

Тема в разделе "Разработка плагинов для новичков", создана пользователем therimuru_, 21 окт 2022.

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

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Привет, у меня есть плагин на титулы. Мне нужно подключить плейсхолдеры для вывода титула соответственно. В чате, табе и над головой. Слышал что можно сделать через PAPI. Как такое реализовать? Тем не нашёл
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    https://github.com/PlaceholderAPI/P...eholderExpansion#with-a-plugin-internal-class
    Можешь, прям, вглухую копи-пастить.
    Вся логика плейсхолдера проходит в onRequest. В качестве params тебе приходит весь текст после первого _. Например в %titles_some_other_params% значением будет "some_other_params".
    С остальным, думаю, разберешься.
     
  3. Автор темы
    therimuru_

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Спасибо, только сейчас руки дошли до плагинов. Ещё вопросик, что на счёт слова до запятой? Это то что мы возвращаем в getIdentifier()?
     
  4. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Имеешь ввиду до _? Да, это идентификатор.
     
  5. Автор темы
    therimuru_

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Не робит:
    PHP:
    package org.emptyyyperson.nightlytituls;

    import me.clip.placeholderapi.expansion.PlaceholderExpansion;
    import org.bukkit.OfflinePlayer;
    import org.jetbrains.annotations.NotNull;
    import org.jetbrains.annotations.Nullable;

    public class 
    PAPIManager extends PlaceholderExpansion {

        public 
    NightlyTituls plugin;

        public 
    PAPIManager(NightlyTituls plugin) {
            
    this.plugin plugin;
        }

        @
    Override
        
    public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
            return 
    "*titul here*";
        }

        @
    Override
        
    public @NotNull String getIdentifier() {
            return 
    "nightlytituls";
        }

        @
    Override
        
    public @NotNull String getAuthor() {
            return 
    "emptyyyperson";
        }

        @
    Override
        
    public @NotNull String getVersion() {
            return 
    "1.0.0";
        }

        @
    Override
        
    public boolean persist() {
            return 
    true;
        }
    }
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    А зарегистрировал?
     
  7. Автор темы
    therimuru_

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    Забыл. Спасибо.
    Для работы с титулами в чате нужен EssXChat?
     
  8. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    EssChat пока может максимум отобразить displayName игрока - поддержка PAPI в планах, но пока неизвестно когда именно. Собственно, лучше использовать что-то с поддержкой PAPI.
     
  9. Автор темы
    therimuru_

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

    Баллы:
    66
    Имя в Minecraft:
    therimuru_
    А если мне нужно использовать именно EssChat? Можно это как то сделать?
     
  10. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Можно изменить формат в AsyncPlayerChatEvent, просто прописав свой - event.setFormat(event.getFormat().replace("{title}", "*title here*")). Главное поставить приоритет повыше.
     

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