- Баллы
- 76
- Имя в Minecraft
- SiRiuS_OSiRiuS
ПРОСТОЙ МУТ В ЧАТЕ
Как работать с чатовыми событиями
--------------------------------------------------------------
В этой статье мы создадим простой плагин, отключающий чат на вашем сервере. В конце статьи вы найдёте несколько упражнений, выполнив которые самостоятельно, вы улучшите свой плагин.Как работать с чатовыми событиями
ОСНОВЫ
Самое простое, с чего мы начнём - создадим небольшой пример, отменяющий событие. Скоро это нам пригодится, так давайте же взглянем на то, как мы отменяем чатовое событие.
В данном случае мы используем AsyncPlayerChatEvent, и мы бы хотели отменять все эти события. Фактически, код ниже удалит чат на сервере. Давайте взглянем на него.
Java:
@EventHandler
public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
event.setCancelled(true);
}
ДОБАВЛЕНИЕ ПЕРЕКЛЮЧАТЕЛЯ
Будет потно, если вам придётся ставить этот плагин всякий раз, когда вы захотите заглушить чат, не так ли? Давайте добавим команду для переключения! Сперва пересмотрим наш Listener:
Java:
private volatile boolean chatEnabled = true;
@EventHandler
public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
if (!chatEnabled) {
event.setCancelled(false);
}
}
Теперь мы можем добавить наш обработчик команды (добавление команды в plugin.yml не является целью данной статьи). Давайте представим, что наш Listener и Plugin являются одним классом:
Java:
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
// Проверяем, какая команда была только что введена
if (cmd.getName().equalsIgnoreCase("mutechat")) {
// Меняем chatEnabled на ему противоположный
chatEnabled = !chatEnabled;
// Смотрим: если chatEnabled приняло значение true, выводим 'Включён чат', если нет, то выводим 'Отключён чат'
sender.sendMessage(ChatColor.GREEN + (chatEnabled ? "Включён чат" : "Отключён чат"));
}
// Всегда возвращаем true, так как больше нет фактических использований, кроме как просто названия команды
return true;
}
Когда этот плагин запущен, вы легко сможете использовать /mutechat для отключения чата, и ещё раз для его включения. Это так просто!
УПРАЖНЕНИЯ
- Как бы вы улучшили структуру этого плагина?
- Как бы вы сделали так, чтобы все отправленные в чат сообщения обрабатывались, но были видны только отправителю?
- Обратите внимание, мы не сделали проверку на право. Как бы вы реализовали проверку на наличие прав для ввода команды /mutechat?
- Если вы используете /mutechat даже от имени администратора, ваши сообщения не будут проходить. Как бы вы реализовали переопределение для администраторов?
Просьба уведомить меня в ЛС о наличии смысловых ошибок/ошибок в переводе
Последнее редактирование: