Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Protocollib - получение сообщения

Метки:
Теги Теги
bukkit java protocollib

Andrine

Активный участник
Пользователь
Баллы
66
Как можно получить сообщение, отправленное игроку плагином? Дайте готовый код, я просмотрел весь интернет, всё что там есть, вызывает ошибки. Мне нужно проверить строку на наличие определенного сообщения и отменить event или удалить ее.
 
Не стоит так часто апать темы. Во-первых, в этом смысла нет. Во-вторых, это запрещено правилами.

Готовый код никто не даст, это всё не так просто делается. Если хочешь готовый код - плати разработчику и заказывай готовый плагин.
Расскажу алгоритм действий, но разобраться с реализацией тебя придётся самостоятельно.

Тебе необходимо в протоколлиб добавить обработчик пакета PacketType.Play.Server.SYSTEM_CHAT или PacketType.Play.Server.CHAT в зависимости от типа сообщения. Если не ошибаюсь, на более ранних версиях оба вида сообщения отправлялись одинаковым пакетом.

Если работаешь с SYSTEM_CHAT, то, скорее всего, нужно будет поверить тип сообщения. Получить тип можно так: event.getContainer().getChatTypes().read(0)

Далее получаешь содержимое сообщения:
либо this.container.getChatComponents().read(0)
либо this.container.getChatComponentArrays().read(0)

После этого анализируешь каждый компонент в цикле. Если он текстовый (instanceof), то получаешь его содержимое и проверяешь наличие нужного текста в нём. Если это нужный компонент - пересоздаешь текстовый компонент и заменяешь в контейнете пакета старый компонент на новый.

На более старых версиях вместо компонентов будут строки (либо в виде json, либо в виде plain-текста)
 
Последнее редактирование:

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

Назад
Верх