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

Помогите Использование papi

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

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

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

    Баллы:
    76
    Всем привет.
    Мне нужно использовать переменную из моего плагина в чате другого плагина (Chatty).
    Код:
    У меня есть переменная %carOwner%
    Мне нужно, чтобы в чате из плагина Chatty перед моим ником отображалась эта переменная, своего рода префикс.
     
    Как я понял, это реализуется через papi, но вот вопрос.. Как это всё дело использовать?
    Я нашел инструкцию на гитхабе, но не понимаю, как это должно работать!

    Кто работал с papi, подскажите плес
     
  2. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Всё, что от тебя требуется - зарегистрировать плейсхолдер в PAPI. Всё.
     
  3. Автор темы
    Kurumi

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

    Баллы:
    76
    Мм, как?
     
  4. alexandrage

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

    Баллы:
    173
    Это не так делается, дурачек :D. Тебе нужно реплейсить свой тег в AsyncPlayerChatEvent.
    Не нужны тут никакие костыли с papi.
     
  5. MurlikMurlik

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

    Баллы:
    96
    Выставляй высокий приоритет ивенту AsyncPlayerChatEvent.
    Бери собственно текст от туда, заменяй нужный заполнитель на свою переменную, устанавливай измененный текст назад.
     
  6. Автор темы
    Kurumi

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

    Баллы:
    76
    Собсна, вот что получается по советам выше...

    PHP:
    [17:55:59] [Async Chat Thread #0/ERROR]: Could not pass event AsyncPlayerChatEvent to Chatty v2.15.2
    java.util.UnknownFormatConversionExceptionConversion 'to'
        
    at org.bukkit.event.player.AsyncPlayerChatEvent.setFormat(AsyncPlayerChatEvent.java:103) ~[patched_1.13.2.jar:git-Paper-632]
        
    at ru.mrbrikster.chatty.chat.ChatListener.onChat(ChatListener.java:148) ~[?:?]
        
    at ru.mrbrikster.chatty.chat.ChatListener.execute(ChatListener.java:90) ~[?:?]
        
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[patched_1.13.2.jar:git-Paper-632]
        
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:66) ~[patched_1.13.2.jar:git-Paper-632]
        
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:520) ~[patched_1.13.2.jar:git-Paper-632]
        
    at net.minecraft.server.v1_13_R2.PlayerConnection.chat(PlayerConnection.java:1696) ~[patched_1.13.2.jar:git-Paper-632]
        
    at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1611) ~[patched_1.13.2.jar:git-Paper-632]
        
    at net.minecraft.server.v1_13_R2.PacketPlayInChat$1.run(PacketPlayInChat.java:39) ~[patched_1.13.2.jar:git-Paper-632]
        
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_181]
        
    at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_181]
        
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_181]
        
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_181]
        
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
    Code:
    PHP:
    @EventHandler(priority EventPriority.LOWEST)
    public 
    void chat(AsyncPlayerChatEvent event) {
        if(
    event.getFormat().contains("%town%")) {
            if(
    PlayerUtils.hasTown(event.getPlayer().getUniqueId().toString())) {
                
    event.setFormat(event.getFormat()
                        .
    replace("%town%"PlayerUtils.getTownByPlayerUuid(event.getPlayer().getUniqueId().toString()).getName()));
            }
        }
    }
    chatty cfg:

    PHP:
    local:
        
    enabletrue
        format
    '[Local] %town%{prefix}{player}{suffix}: {message}'
        
    range100
        cooldown
    : -1
     
  7. Автор темы
    Kurumi

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

    Баллы:
    76
    Разобрался...
     
Статус темы:
Закрыта.

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