User: Напиши плагин для майнкрафт ChatPriority. А что если, когда DiscordSRV получает сообщение из майнкрафта, мы проверяем это сообщение, если оно не из чата Global, то мы не отправляем его в дискорд.

import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import ru.brikster.chatty.api.chat.Chat;

import java.util.List;

public final class ChattyMessageEvent extends Event {

    private static final HandlerList HANDLER_LIST = new HandlerList();

    private final Player player;
    private final Chat chat;
    private final String plainMessage;
    private final List<Player> recipients;

    public ChattyMessageEvent(@NotNull Player player,
                              @NotNull Chat chat,
                              @NotNull String plainMessage,
                              @NotNull List<Player> recipients) {
        super(true);
        this.player = player;
        this.chat = chat;
        this.plainMessage = plainMessage;
        this.recipients = recipients;
    }

    public static HandlerList getHandlerList() {
        return HANDLER_LIST;
    }

    /**
     * Returns the player that sends a message
     *
     * @return player that sends a message
     */
    @NotNull
    public Player getSender() {
        return player;
    }

    /**
     * Returns the chat to which message sends
     *
     * @return chat to which message sends
     */
    @NotNull
    public Chat getChat() {
        return chat;
    }

    /**
     * Returns the plain message text, typed by player
     *
     * @return plain message text
     */
    @NotNull
    public String getPlainMessage() {
        return plainMessage;
    }

    @NotNull
    public List<Player> getRecipients() {
        return recipients;
    }

    @Override
    @NotNull
    public HandlerList getHandlers() {
        return HANDLER_LIST;
    }

}
Assistant: Создать плагин для Minecraft, который взаимодействует с DiscordSRV и запретает отправку сообщений в Discord, если они приходят из чата, отличного от "Global", можно следующим образом. Я приведу пример кода, который использует события и интеграцию с DiscordSRV для достижения описанного поведения.

### Основная идея

Мы будем слушать события, связанные с сообщениями, и проверять, является ли они частью чата "Global". Если нет, мы предотвратим их отправку в Discord.

### Шаги по созданию плагина

1. **Импорт необходимых библиотек:** Убедитесь, что у вас настроены зависимости для Bukkit API и DiscordSRV.

2. **Создание класса основного плагина:**

```java
package your.package.name;

import github.scarsz.discordsrv.dependencies.jda.api.entities.TextChannel;
import github.scarsz.discordsrv.DiscordSRV;
import github.scarsz.discordsrv.dependencies.jda.api.entities.TextChannel;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import ru.brikster.chatty.api.events.ChattyMessageEvent;

public class ChatPriority extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        // Регистрация события
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onChattyMessage(ChattyMessageEvent event) {
        // Проверьте, является ли чат "Global"
        if (!event.getChat().getName().equalsIgnoreCase("Global")) {
            // Остановка обработки сообщения для обрезки перед отправкой в Discord
            event.setCancelled(true);
        } else {
            // Логика отправки в Discord
            String message = event.getSender().getName() + ": " + event.getPlainMessage();
            TextChannel channel = DiscordSRV.getPlugin().getDestinationTextChannelForGameChannelName("global");
            if (channel != null) {
                channel.sendMessage(message).queue();
            }
        }
    }
}
```

### Описание кода:

- **Импорт событий:** Мы используем событие `ChattyMessageEvent`, чтобы получить доступ к сообщениям в чате.
  
- **Проверка имени чата:** Мы проверяем, является ли имя чата "Global". Если нет, мы останавливаем дальнейшую обработку.

- **Отправка в Discord:** Если чат "Global", мы формируем сообщение и отправляем его в соответствующий Discord канал.

### Важно

- Убедитесь, что в `plugin.yml` указано правильное название основного класса плагина.
- Убедитесь, что у вашего сервера есть доступ ко всем необходимым библиотекам, включая DiscordSRV и Chatty API.
- Вам может понадобиться добавить дополнительные проверки и логгирование, чтобы улучшить диагностику и надежность.

Этот код является базовым шаблоном, и его нужно адаптировать под конкретные задачи и архитектуру вашего проекта.
User: Плагин не должен отправлять сообщение в дискорд самостоятельно, а лишь передавать его Discord SRV если оно в чате global.
Assistant: Если ваша цель заключается в том, чтобы плагин фильтровал сообщения, передаваемые в DiscordSRV, но не отправлял их самостоятельно, вы можете просто отменить события для всех сообщений, которые не находятся в нужном чате. DiscordSRV будет автоматически обрабатывать остальные сообщения.

Вот как можно это реализовать, чтобы интегрироваться с DiscordSRV без явной отправки сообщений:

```java
package your.package.name;

import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import ru.brikster.chatty.api.events.ChattyMessageEvent;

public class ChatPriority extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        // Регистрация слушателя событий
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void onChattyMessage(ChattyMessageEvent event) {
        // Проверка, что имя чата не "Global"
        if (!"Global".equalsIgnoreCase(event.getChat().getName())) {
            // Отклонение сообщения, если оно не из чата Global
            event.setCancelled(true);
        }
    }
}
```

### Основные моменты:

- **Отмена события:** Используя `event.setCancelled(true)`, мы предотвращаем дальнейшее распространение сообщения, если чат не является "Global". Это effectively блокирует передачу сообщения в Discord через DiscordSRV.

- **Приоритет события:** Мы используем высокий приоритет (`EventPriority.HIGHEST`) и игнорируем уже отмененные события (`ignoreCancelled = true`), чтобы быть уверенными, что наш слушатель выполнится после других обработчиков и только для сообщений, которые еще активны.

- **Отсутствие повторной отправки:** Поскольку мы не обрабатываем отправку сообщения в Discord самостоятельно, DiscordSRV будет обрабатывать только те сообщения, которые не были отменены, то есть только те, что из чата "Global".

Таким образом, все сообщения отфильтровываются на сервере, и только нужные из них доходят до Discord через существующую инфраструктуру DiscordSRV.
User: Нет, смотри, они должны отправляться в майнкрафт чат, но не должны доходить до DiscordSRV
Assistant: