GithubHelp home page GithubHelp logo

brikster / chatty Goto Github PK

View Code? Open in Web Editor NEW
84.0 10.0 50.0 1.21 MB

Bukkit-compatible chat management system

License: MIT License

Java 100.00%
bukkit spigot bukkit-plugin spigot-plugin minecraft chat formatting paper paper-plugin

chatty's People

Contributors

brikster avatar catcoderr avatar denarydev avatar imdanix avatar kapitowa avatar rfalvan avatar voidpointer0x00 avatar ya-evgeniy avatar yaosiqian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chatty's Issues

Command-spy

Как и следует из названия, это обычный chat-spy, только для команд (выполняемых игроком, соответственно).

MOTD

Не знаю, есть ли в этом какой-то смысл, поскольку EssentialsX предоставляет данную опцию, но всё же напишу.

Как и следует из описания, это MOTD - сообщение для игрока при подключении к серверу. Может состоять из нескольких строк, поддерживает плейсхолдеры.

Сообщение для входа новичка

На данный момент плагин умеет изменять рядовые сообщение входа и выхода игрока. Было бы также неплохо научить его изменять сообщение для первого входа игрока, т.е. новичка.

Звук для аннонсера

Примитивная опция, проигрывающая указанный звук при выводе в чат/другие_места сообщение от аннонсера. Было бы неплохо сделать возможность выбора звука для каждой группы сообщений.

Не работают чаты на модовых ядрах

После обновления вот до этой версии (до этого юзал релиз)...
https://github.com/Brikster/Chatty/actions/runs/206948291

...перестали работать все существующие чаты. Вернее, игроки могут их видеть, могут писать (если я выдаю право chatty.*), но им в ответ постоянно шлёт "Вас никто не услышал". Соответственно, становится довольно неприятно. Моя конфигурация каналов чата:

chats:
  local:
    display-name: 'Локальный'
    enable: true
    format: '&2&l[&a&lL&2&l]&r %prisonranksx_currentrank_displayname% %deluxetags_tag%%luckperms_prefix%{player}: {message}'
    range: 100
    cooldown: -1
    permission: true
    command: 'localchat'

  global:
    display-name: 'Глобальный'
    enable: true
    format: '&6&l[&e&lG&6&l]&r %prisonranksx_currentrank_displayname% %deluxetags_tag%%luckperms_prefix%{player}: {message}'
    range: -2
    symbol: '!'
    cooldown: 1
    permission: true
    command: 'globalchat'

  world:
    enable: true
    display-name: 'Мировой'
    format: '&3&l[&b&lW&3&l]&r %prisonranksx_currentrank_displayname% %deluxetags_tag%%luckperms_prefix%{player}: {message}'
    range: -1
    symbol: '~'
    cooldown: -1
    permission: true
    command: 'worldchat'

  trade:
    display-name: 'Торговый'
    enable: true
    format: |
      &7*&m--------------------&6&l[&e&lТорговля&6&l]&7&m--------------------&7*
      &e&lАвтор: &r%prisonranksx_currentrank_displayname% %deluxetags_tag%%luckperms_prefix%{player}
      &e&lОбъявление: &r{message}
      &7*&m---------------------------------------------------&7*
    range: -2
    symbol: '$'
    money: 1
    cooldown: 300
    permission: true
    command: 'tradechat'

  staff:
    display-name: 'Админский'
    enable: true
    format: '&4&l[&c&lA&4&l]&r %prisonranksx_currentrank_displayname% %deluxetags_tag%%luckperms_prefix%{player}: {message}'
    range: -1
    symbol: '#'
    cooldown: -1
    permission: true
    command: 'staffchat'
    aliases: ['sc']

JSON для аннонсера

Классика, забытая года 2 назад. Обычное JSON форматирование для сообщений аннонсера: ховер-текст, выполнение действия после клика.

JSON в упоминании пользователя

При упоминании пользователя посредством символ @ и клике по части с этим упоминанием фрагмент конфига suggest: '@{player} ' работает некорректно - он указывает на ник игрока, который кликает по упоминанию, а не ник игрока, который это упоминание использовал.

[Suggestion] Chat-bot

Вероятно, это самое глобальное предложение от меня за последнее время. В конкурирующем плагине (ChatManager от H1DD3NxN1NJA) есть такая фишка, как чат-бот - примитивная система, детектящая заранее заданные в конфиге фразы в чате и отвечающая на них пользователям в чате. Фишка нереально крутая и имеет массу применений, однако, в самом ChatManager`е она имеет массу недоработок. Потому предлагаю её сюда в следующем виде, который, как по мне, будет более универсальным и адаптированным непосредственно под Chatty. Пример конфигурации:

prefix: '&6[&eЧат-бот&6]&e: &r' //Префикс бота, вставляемый перед каждым его ответом
cooldown: 5 //Время в секундах, которое бот будет игнорировать вопросы одного и того же игрока после его последнего ответа (Для избежания спама)
global_cooldown: false //Дополнение для cooldown. Значение true означает, что таймер времени перезарядки будет общим для всех игроков, а не для каждого отдельно
triggers: //Перечень ивентов, которые обрабатываются ботом
	join:
		//См. пример в death
	quit:
		//См. пример в death
	death:
		permission: 'chatty.bot.example.death' //Право, которое должно быть у игрока, чтобы бот среагировал на ивент
		answer: | //Ответ бота с поддержкой разделения на несколько строк. При желании можно прикрутить JSON и PAPI
			'Объясните уже кто-нибудь {player}, что вовсе не обязательно обнимать каждый встречный кактус!'
		channel: 'global' //Название канала, в который будет отправляться ответ бота. Для локальных чатов центральной точкой берется позиция игрока, которому дается ответ. Префикс канала чата при этом, естественно, не отображать
		commands: //Список команд, выполняемых при ответе пользователю
			- '[console] say Meow' //Доступные варианты - [console] (для выполнения из консоли), [player] (для выполнения от имени игрока)
questions:
	'question_1': //Название вопроса
		permission: 'chatty.bot.example' //Право, которое должно быть у игрока, чтобы бот среагировал на сообщение
		message: //Перечень слов, которые должны находиться в сообщении игрока. Поддерживает регулярные выражения, т.е. в данном случае бот должен среагировать как на "КАК создать ПРИВАТ", так и на "КАК заПРИВАТить территорию?"
			- 'как'
			- 'приват'
		count: 2 //Дополнение для triggers, обозначающее минимальное количество слов из списка, которое должно быть в сообщении игрока для ответа бота
		answer: | //Ответ бота с поддержкой разделения на несколько строк. При желании можно прикрутить JSON и PAPI
			'{player}, не знаешь как заприватить территорию? - Воспользуйся этим руководством:'
			'google.com'
		channel: 'global' //Название канала, в который будет отправляться ответ бота. Для локальных чатов центральной точкой берется позиция игрока, которому дается ответ. Префикс канала чата при этом, естественно, не отображать
		commands: //Список команд, выполняемых при ответе пользователю
			- '[console] eco take {player} 100' //Доступные варианты - [console] (для выполнения из консоли), [player] (для выполнения от имени игрока)

Вроде как всё учёл. Жду ответа :D

Проблема с replacements (v2.19)

Версия плагина - 2.19 (DEV)

Создан простой чат:

test:
enable: true
format: '&8(&4TEST&8) &c{player}{suffix} &7>> &c{message}'
range: -2
symbol: ']'
cooldown: 5
permission: true

А так же к нему создан replacements:

'test':
  original: '&8(&4TEST&8)'
  text: '&8(&4TEST&8)'
  tooltip:
  - 'Тестовый чат, ага да.'

Проблема обнаружена в том - если данного replacements нету, то цветовой код работает адекватно - то есть &8(&4TEST&8) - слово TEST является красным, а скобки серые.
Но при добавление replacements - цветовые коды вообще не работает на данный чат - то есть они просто белые.

Пример:
Без replacements -
image

С replacements -
image

Дополнение упоминания пользователей

Добавить возможность отображать тайтлы пользователю, который был упомянут в чате. Всего 3 доступных строки:

1. title
2. subtitle
3. actionbar

Возможность применять цветовые коды и, в идеале, плейсхолдеры.

Локализация наименований каналов чата

На данный момент при переключении между чатами выводится сообщение Вы перешли в чат "local/global/etc". Было бы неплохо создать для каждого канала возможность задать название на русском языке, дабы не использовать оригинальное наименование объекта.

Плагин не видит чат.

Плагин DiscordSRV при отправке сообщения пишет: (это при отправке сообщения в дискорде.)
[15:38:12 ERROR]: [DiscordSRV] Unable to get Chatty plugin
[15:38:12 WARN]: java.lang.NoSuchMethodException: ru.mrbrikster.chatty.Chatty.api()
[15:38:12 WARN]: at java.lang.Class.getMethod(Unknown Source)
[15:38:12 WARN]: at github.scarsz.discordsrv.hooks.chat.ChattyChatHook.getApi(ChattyChatHook.java:72)
[15:38:12 WARN]: at github.scarsz.discordsrv.hooks.chat.ChattyChatHook.broadcastMessageToChannel(ChattyChatHook.java:46)
[15:38:12 WARN]: at github.scarsz.discordsrv.DiscordSRV.broadcastMessageToMinecraftServer(DiscordSRV.java:1356)
[15:38:12 WARN]: at github.scarsz.discordsrv.listeners.DiscordChatListener.onGuildMessageReceived(DiscordChatListener.java:245)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:398)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:96)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:82)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:69)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.JDAImpl.handleEvent(JDAImpl.java:150)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:97)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.handle.SocketHandler.handle(SocketHandler.java:36)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:948)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:835)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:813)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:986)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.ReadingThread.main(ReadingThread.java:108)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.ReadingThread.runMain(ReadingThread.java:64)
[15:38:12 WARN]: at github.scarsz.discordsrv.dependencies.ws.client.WebSocketThread.run(WebSocketThread.java:45)
А при запуске самого плагина, как он включается, пишет:
[Пн, 12. окт 2020 15:19:43 AZT ERROR] [DiscordSRV] Plugin DiscordSRV v1.20.0 has failed to register events for class github.scarsz.discordsrv.hooks.chat.ChattyChatHook because ru/mrbrikster/chatty/api/events/ChattyMessageEvent does not exist.

Поддержка PlaceholderAPI?

Мне почему-то казалось, что эта фишка включена вообще во все менеджеры чатов, но, почему-то, в Chatty этого либо нет, либо у меня это просто не работает.
Сообщения при входе/выходе, а также аннонсер, по неизвестной мне причине не вытягивают плейсхолдеры.
Пример сообщения входа на сервер:
image
При условии, что /papi parse me %luckperms_prefix% работает отлично.

Chat categories not work!

chats:
l1:
enable: true
format: '&7(Шепотом)&r {prefix} {player} {suffix} &8→ &7{message}'
range: 10
cooldown: -1
l2:
enable: true
format: '&7(Говорит)&r {prefix} {player} {suffix} &8→ &7{message}'
range: 25
cooldown: -1
l3:
enable: true
format: '&7(Кричит)&r {prefix} {player} {suffix} &8→ &7{message}'
range: 100
cooldown: -1
l4:
enable: false
format: '&e(Слухи)&r {prefix} {player} {suffix} &8→ &e{message}'
range: 9000
cooldown: -1

Could not pass event AsyncPlayerChatEvent to Chatty v2.18.1

[14:26:58 ERROR]: Could not pass event AsyncPlayerChatEvent to Chatty v2.18.1
ru.mrbrikster.chatty.util.gson.JsonSyntaxException: ru.mrbrikster.chatty.util.gson.stream.MalformedJsonException: Unterminated string at line 1 column 7832 path $.last-pm-interlocutor.IN_DANIBR
at ru.mrbrikster.chatty.util.gson.internal.Streams.parse(Streams.java:60) ~[?:?]
at ru.mrbrikster.chatty.util.gson.JsonParser.parse(JsonParser.java:84) ~[?:?]
at ru.mrbrikster.chatty.util.gson.JsonParser.parse(JsonParser.java:59) ~[?:?]
at ru.mrbrikster.chatty.util.gson.JsonParser.parse(JsonParser.java:45) ~[?:?]
at ru.mrbrikster.chatty.chat.JsonStorage.getProperty(JsonStorage.java:78) ~[?:?]
at ru.mrbrikster.chatty.chat.JsonStorage.getProperty(JsonStorage.java:106) ~[?:?]
at ru.mrbrikster.chatty.chat.Chat.lambda$getRecipients$1(Chat.java:65) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176) ~[?:?]
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1624) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
at ru.mrbrikster.chatty.chat.Chat.getRecipients(Chat.java:82) ~[?:?]
at ru.mrbrikster.chatty.chat.ChatListener.onChat(ChatListener.java:161) ~[?:?]
at ru.mrbrikster.chatty.chat.ChatListener.execute(ChatListener.java:95) ~[?:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[patched_1.15.2.jar:git-Tuinity-"e41b5ce"]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.15.2.jar:git-Tuinity-"e41b5ce"]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.15.2.jar:git-Tuinity-"e41b5ce"]
at net.minecraft.server.v1_15_R1.PlayerConnection.chat(PlayerConnection.java:1785) ~[patched_1.15.2.jar:git-Tuinity-"e41b5ce"]
at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1700) ~[patched_1.15.2.jar:git-Tuinity-"e41b5ce"]
at net.minecraft.server.v1_15_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:41) ~[patched_1.15.2.jar:git-Tuinity-"e41b5ce"]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: ru.mrbrikster.chatty.util.gson.stream.MalformedJsonException: Unterminated string at line 1 column 7832 path $.last-pm-interlocutor.IN_DANIBR
at ru.mrbrikster.chatty.util.gson.stream.JsonReader.syntaxError(JsonReader.java:1568) ~[?:?]
at ru.mrbrikster.chatty.util.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1031) ~[?:?]
at ru.mrbrikster.chatty.util.gson.stream.JsonReader.nextString(JsonReader.java:815) ~[?:?]
at ru.mrbrikster.chatty.util.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:702) ~[?:?]
at ru.mrbrikster.chatty.util.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:723) ~[?:?]
at ru.mrbrikster.chatty.util.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:723) ~[?:?]
at ru.mrbrikster.chatty.util.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:698) ~[?:?]
at ru.mrbrikster.chatty.util.gson.internal.Streams.parse(Streams.java:48) ~[?:?]
... 27 more

не компилится chatty-spigot

При попытке скомпилить последний снапшот под 1.16 выходит сделать только chatty-api, под chatty-spigot оно не может обратится к нужным зависимостям, если я верно понял, из-за неработающего сайта.

Downloading from nametagedit-repo: http://ci.nametagedit.com/plugin/repository/everything/com/nametagedit/nametagedit/4.1.0/nametagedit-4.1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Chatty 2.19-SNAPSHOT:
[INFO]
[INFO] Chatty ............................................. SUCCESS [ 0.144 s]
[INFO] chatty-api ......................................... SUCCESS [ 5.405 s]
[INFO] chatty-spigot ...................................... FAILURE [ 1.387 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.148 s
[INFO] Finished at: 2020-07-19T19:43:05+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project chatty-spigot: Could not resolve dependencies for project ru.mrbrikster:chatty-spigot:jar:2.19-SNAPSHOT: Failed to collect dependencies at com.nametagedit:nametagedit:jar:4.1.0: Failed to read artifact descriptor for com.nametagedit:nametagedit:jar:4.1.0: Could not transfer artifact com.nametagedit:nametagedit:pom:4.1.0 from/to nametagedit-repo (http://ci.nametagedit.com/plugin/repository/everything/): Transfer failed for http://ci.nametagedit.com/plugin/repository/everything/com/nametagedit/nametagedit/4.1.0/nametagedit-4.1.0.pom 503 Service Unavailable -> [Help 1]

Собственные плейсхолдеры

Не знаю, почему не задумался об этом раньше. Предлагаю добавить несколько новых плейсхолдеров:
%chatty_currentchat_{player_name}% - Возвращает строку - название канала чата (а лучше displayname, о котором говорилось в одном из моих предложений), в котором находится указанный в скобках игрок.
%chatty_chat_cooldown% - Возвращает дробное значение (при желании можно округлить плейсхолдером math) задержки до отправки следующего сообщения.
%chatty_playercount_{chat_channel_name}% - Возвращает интовое значение - количество игроков, на данный момент находящихся в указанном канале чата.

Замена символа канала чата

Если я перейду в глобальный чат при помощи команды /globalchat, а затем напишу сообщение вида !Всем привет, то знак восклицания все равно удалится для отправки сообщения в глобал.
Предложение: Не заменять символ чата, если игрок уже в нём находится.

[compatibility] player join/quit/death event

Hello!
When the Chatty plugin is installed, all messages about the player’s join/quit/death, including messages from other plugins (for example, DeathMessagesPrime) are blocked if

misc:
  join/quit/death:
    message: ''

or overwritten if

misc:
  join/quit/death:
    message: 'anything'

I ask you to add an option to the config, which would allow you to completely disable listening to the join/quit/death events.
Best regards.

API

Hey, looking to hook Chatty into DiscordSRV, I'd need;

  • A way to figure out what channel a chat event went to (method or custom event)
  • A way to send messages to a specific channel

Поддержка нескольких команд для смены канала чата

Описание полностью соответствует названию темы. Пример задачи:
Есть админский чат, а-ка "StaffChat", доступ к нему осуществляется посредством команды /staffchat, но было бы неплохо также использовать /sc. Можно решить этот вопрос через левые плагины, вроде DeluxeCommands или MyCommand, но, думаю, реализация посредством этого плагина будет тоже не слишком сложной.

Logs work when they are disabled in the config

Здравствуйте! Такая вот проблема: в конфиге отключено логирование чата, но в папке /logs продолжают появляться log-файлы.
Конфиг-файл не резал, удалён только один блок - сообщения о гибели игрока. Помогите пожалуйста. Спасибо!

Could not pass event AsyncPlayerChatEvent to Chatty v2.18

при попытке написать в чат настроенной для банжи выдает эту ошибку:

Could not pass event AsyncPlayerChatEvent to Chatty v2.18
org.bukkit.plugin.messaging.ChannelNotRegisteredException: Attempted to send a plugin message through the unregistered channel `BungeeCord'.
	at org.bukkit.plugin.messaging.StandardMessenger.validatePluginMessage(StandardMessenger.java:544) ~[patched_1.16.1.jar:git-Paper-82]
	at org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer.sendPluginMessage(CraftPlayer.java:1510) ~[patched_1.16.1.jar:git-Paper-82]
	at ru.mrbrikster.chatty.bungee.BungeeBroadcaster.broadcast(BungeeBroadcaster.java:23) ~[?:?]
	at ru.mrbrikster.chatty.chat.ChatListener.onChat(ChatListener.java:269) ~[?:?]
	at ru.mrbrikster.chatty.chat.ChatListener.execute(ChatListener.java:95) ~[?:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[patched_1.16.1.jar:git-Paper-82]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.1.jar:git-Paper-82]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.16.1.jar:git-Paper-82]
	at net.minecraft.server.v1_16_R1.PlayerConnection.chat(PlayerConnection.java:1821) ~[patched_1.16.1.jar:git-Paper-82]
	at net.minecraft.server.v1_16_R1.PlayerConnection.a(PlayerConnection.java:1736) ~[patched_1.16.1.jar:git-Paper-82]
	at net.minecraft.server.v1_16_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:41) ~[patched_1.16.1.jar:git-Paper-82]
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_251]
	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_251]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_251]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_251]
	at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
[16:14:54] [Async Chat Thread - #5/INFO]: [#] LLLL: asdas

Установлен на всех серверах. на банже включительно (верися для банжи).
Конфиги везде идентичны.

git-Paper-82 (1.16.1-R0.1-SNAPSHOT)

Конфиг (частично)

  bunge:
    enable: true
    format: '[#] {prefix}{player}{suffix}: {message}'
    range: -3
    symbol: '*'
    cooldown: 10
    money: 10
    command: 'maxchat'
  bungeecord: true
config-version: '2.0'

# ******************************************************
# * Chatty (version 2.18)

JSON - Клик по цветному нику игрока

При включенном форматировании JSON клик по цветному нику с плейсхолдером {player} (без PlaceholedAPI) также копирует и скрытые символы, в результате я получаю: §4SSKirillSS§r. Соответственно, использование такого в команде вызовет отключение от сервера из-за использования некорректных знаков. Возможно ли это как-то исправить?

Not working PAPI placeholders.

Hi.
Paper 1.15.2
Chatty 2.16.1
In config I tried to place %deluxetags_tag%, but when I trying to send a message in chat, I gets error in console:
[14:46:23 ERROR]: Could not pass event AsyncPlayerChatEvent to Chatty v2.16.1 java.util.UnknownFormatConversionException: Conversion = ' ' at org.bukkit.event.player.AsyncPlayerChatEvent.setFormat(AsyncPlayerChatEvent.java:101) ~[patched_1.15.2.jar:git-Paper-121] at ru.mrbrikster.chatty.chat.ChatListener.onChat(ChatListener.java:160) ~[?:?] at ru.mrbrikster.chatty.chat.ChatListener.execute(ChatListener.java:97) ~[?:?] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[patched_1.15.2.jar:git-Paper-121] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.15.2.jar:git-Paper-121] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:559) ~[patched_1.15.2.jar:git-Paper-121] at net.minecraft.server.v1_15_R1.PlayerConnection.chat(PlayerConnection.java:1734) ~[patched_1.15.2.jar:git-Paper-121] at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1649) ~[patched_1.15.2.jar:git-Paper-121] at net.minecraft.server.v1_15_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:41) ~[patched_1.15.2.jar:git-Paper-121] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_211] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_211] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_211] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_211] at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]

When I am trying to use {deluxetags_tag}, that placeholder isn't working.

Расширение опции замены мата

В данный момент мат может быть заменён на слово, указанное в поле moderation/swear/replacement. И, как я понимаю, такое слово может быть всего одно. Было бы неплохо, если бы эта опция поддерживала несколько предложенных слов, и при виде мата в чате заменяла на случайное из этого списка (моя основная цель в данном случае - заменять мат на звуки животных :3).

Совсем-совсем в идеале добавить поддержку форматирования текста, т.е. возможность окрасить слово, на которое будет заменяться мат. В качестве временной меры можно использовать окрашивание при помощи символа §, но с ним довольно неудобно работать, если есть несколько групп, и у каждой свой цвет текста.

<3

Совместимость с Essentials Vanish

Когда игрок входит в ваниш, ему все еще можно писать личные сообщения. Можно ли сделать опцию для выключения этой возможности?

Опция блокировки капса

В файле конфигурации есть раздел moderation/caps/block, он по дефолту стоит на true. В описании к нему сказано, что если поставить на false, то сообщения будут отсылаться в нижнем регистре. Вне зависимости от того, что стоит в этой опции, сообщения всегда отправляются в нижнем регистре, если система капса их детектит.

Также, было бы неплохо, если бы в нижний опускало не всё сообщение, а, например, вот так:
Из...
ПРИВЕТ, КАК ДЕЛА? У МЕНЯ ОТЛИЧНО!
В...
Привет, как дела? У меня отлично!

Т.е. после знаков препинания, обозначающих конец предложения первый символ писать с большой буквы. Также, первый символ в предложении тоже писать с большой.

<3

Errors in Log.

Getting errors whenever someone types ... any clue?

[15:50:23] [Async Chat Thread - #0/INFO]: Calli: yee [15:50:59] [Async Chat Thread - #0/ERROR]: Could not pass event AsyncPlayerChatEvent to Chatty v2.1 org.bukkit.event.EventException: null at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:308) ~[spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:482) [spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at net.minecraft.server.v1_13_R1.PlayerConnection.chat(PlayerConnection.java:1556) [spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at net.minecraft.server.v1_13_R1.PlayerConnection.a(PlayerConnection.java:1494) [spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at net.minecraft.server.v1_13_R1.PacketPlayInChat$1.run(PacketPlayInChat.java:39) [spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_171] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_171] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_171] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_171] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171] Caused by: java.lang.IllegalStateException: Asynchronous command dispatch! at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14) ~[spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at org.bukkit.craftbukkit.v1_13_R1.CraftServer.dispatchCommand(CraftServer.java:691) ~[spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at org.bukkit.Bukkit.dispatchCommand(Bukkit.java:576) ~[spigot-1.13.jar:git-Spigot-1503de9-cfc6796] at ru.mrbrikster.chatty.fanciful.FancyMessage.send(FancyMessage.java:472) ~[?:?] at ru.mrbrikster.chatty.fanciful.FancyMessage.send(FancyMessage.java:496) ~[?:?] at ru.mrbrikster.chatty.json.FormattedMessage.send(FormattedMessage.java:23) ~[?:?] at ru.mrbrikster.chatty.listeners.ChatListener.onJsonMessage(ChatListener.java:266) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_171] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_171] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:304) ~[spigot-1.13.jar:git-Spigot-1503de9-cfc6796] ... 11 more

Replacements are not applied for console

As title says, replacements are not applied to console logging. Placeholder is being parsed from sender, so there should be possibility to display it in console.

config.yml

replacements:
  'country':
    original: '{cc}'
    text: '%sdlib_countrycode%'
    tooltip:
    - '&7{player} is from &f%sdlib_country%'

  # Only for testing purposes; placeholder is not ready yet
  'level':
    original: '{l}'
    text: '353'
    tooltip:
    - '&7{player} has &f353&7 level.'

Chat:

image

Console:

[22:58:44] [Async Chat Thread - #3/INFO]: [{cc}] [{l}] [Owner] [Grabsky]: Test

Проблема с AdvancedMentions/DeluxeMentions и им подобными

При упоминании игрока в чате происходит следующее:
https://pastebin.com/kLyQA7W0

Само упоминание работает корректно, игрок получает уведомление, но вот ошибками спамит знатно.
Было бы неплохо либо добавить фичу с упоминаниями в сам Chatty, либо дать возможность таким сообщениям идти только в глобал.

Пару идей связанные с префиксами\суффиксами.

  1. Добавить возможность сохранять префиксы\суффиксы в msql, чат станет еще обширней в плане взаимодействия с банжой так как можно будет сделать общую базу для всех серверов.
  2. Вывести префиксы и суффиксы в плейсхолдеры, для того что бы их можно было использовать в том же табе или еще где (не знаю как правильно выразится если честно, надеюсь понятно)

3? discordSRV? нормальных чатов с его поддержкой попросту не существует....

Спасибо огромное за плагин <3 Это самый удобный, простой и легко настраиваемый чат который я встречала!

Вайтлист матов не различает регистр символов

Использую фильтр от VirtualMaks, добавил в вайтлист слово "корабля". Если в игре ввожу это слово строчными символами - всё нормально, но если хоть одна буква будет верхнего регистра - считает за мат.
Не знаю, проблема плагина это или фильтра, но выглядит так, будто первое.

Версия от 30 марта 2020.

Sugestion: Add channel aliases

It would be very good to be able to send messages using commands defined in the configuration as done with symbols.

Exemple:

chats:
  local:
    enable: true
    format: '[Local] {prefix}{player}{suffix}: {message}'
    range: 100
    cooldown: -1
    command: 'localchat'
    alias: 'l'

  global:
    enable: true
    format: '[Global] {prefix}{player}{suffix}: {message}'
    range: -1
    symbol: '!'
    cooldown: -1
    command: 'globalchat'
    alias: 'g'

So you can use /l <message> and /g <message> without fixing the channels like symbol.

Поддержка мультистрочного форматирования чата

Как и говорится в заглавии, было бы неплохо добавить возможность форматирования сообщений некоторых каналов в несколько строк. В качестве примера могу привести торговый чат. Обычно он ничем не отличается от других каналов, ведь зачастую единственным отличительным признаком является префикс. В качестве решения этой проблемы можно добавить ему по одной строке-разделителю сверху и снизу, в результате получится что-то вроде этого:

===========================================
[Торговля] SSKirillSS: Продам стак алмазов!
===========================================

Собственно, предложение заключается в добавлении возможности в конфиге определить несколько строк для форматирования текста в определенном канале, а не одну.

Replacements-модуль в конфигурации плагина

Заполнил следующим образом:

  # Replacements for chat formats.
  #
  # You can replace some plain text with clickable parts
  # to make chat more interactive.
  #
  # Available properties:
  # text, tooltip, command, suggest, link.
  replacements:
    'Test':
      # Original text.
      original: 'Test'

      # New text.
      #
      # Supports PlaceholderAPI.
      # You can use "{player}" variable here.
      #
      # Remove this line, if you need original text.
      text: 'TestReplacement'

      # Hover tooltip for the text.
      #
      # Supports PlaceholderAPI.
      #
      # You can use "{player}" variable here.
      tooltip:
        - 'Test'

На выходе не вижу никаких изменений вообще. Как писал в чат Test, так и пишу.

JSON - Поддержка плейсхолдеров от других плагинов

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

Я использую IridiumSkyBlock, в нём есть плейсхолдер, отображающий уровень острова - [ISLAND_LEVEL], его я добавил в префикс к игроку - всё работает отлично, но если добавляю в json/tooltip - эффекта нет, отображается просто название плейсхолдера. Можно ли как-то это исправить, или нужно писать разработчикам ISkyBlock?

Перечень слов для автоматического переключения между каналами чата

Принцип предельно прост: Если в сообщении игрока есть слова из списка, то это сообщение пересылается в определенный канал чата.
Где это может быть полезно? - Представим ситуацию, когда у вас есть торговый чат. В большинстве случаев на него всем всё равно, но... Я ХОЧУ ТОРГОВЫЙ ЧАТ. Так вот, если в сообщении игрока детектится "Продам" или "Куплю", то это сообщение автоматом пересылается в торговый.
Думаю, спектр применений этой функции куда шире, но в ситуации с торговым чатом это довольно неплохо звучит.

Holograms above head

Like this
https://imgur.com/a/UiCEpF0

Знаю, что ты русский, но это может быть интересно твоей зарубежной аудитории, поэтому написал на английском.
Очень прошу добавить такую фичу ❤
А ещё я хз куда кидать предложения/просьбы на гитхабе, буду благодарен, если объяснишь.

И насчёт API - Обязательно добавь, буду использовать.

И спасибо тебе большое за твою работу.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.