- Баллы
- 153
Да, много прошло времени с последней статьи про Bukkit плагины. Но поверьте, на то были причины.
Я предполагаю, что читатель уже умеет делать каркас для плагинов, по этому перейду сразу к коду.
Начнем мы с регистрации обработчиков событий. Это ключевой момент в написании плагинов, которые так или иначе взаимодействуют с игрой. Без них, плагин будет жить сам по себе. Но прежде чем такой обработчик зарегестрировать, его нужно же написать, так? Чем и займемся.
Создаем новый класс и делаем его потомком класса PlayerListener. Теперь добовляем в него метод onPlayerChat. Не трудно догадаться, что это и есть тот самый обработчик событий чата
Сплошной белый чат, в котором визуально сливаются имена и сообщения по моему уныл и скучен. Даешь красок! Но как? Очень просто. Всю необходимую информацию и инструменты нам уже предоставил PlayerChatEvent:
А вы ожидали 10+ строк кода?)) Как видите, такая задача решается очень просто. “Но постой, а где тут имя игрока? Где его сообщение?” Опытным путем было выявлено, что по-умолчанию формат сообщений выглядит следующим образом:
Соответственно:
%1$s – имя
%2$s – сообщение
Да, можно было бы иначе написать код и ничего бы не изменилось:
Но,это дело вкуса.
Итак. Обработчик написан. Теперь его нужно зарегестрировать в Событийном механизме Bukkit’а. Возвращаемся в класс DMXChat и объявляем переменную chatListener(в том же блоке, что и mclog):
А теперь регестрируем наш обработчик в событийном механизме Bukkit’а. В методе onEnabled() пишем:
Event.Type.PLAYER_CHAT – событие, на которое вешается обработчик
chatListener - наш обработчик
Event.Priority.Monitor – приоритет события
this – плагин, на который регистрируется событие.
Теперь компонуем всё это в jar файл и кладем в папку plugins. Всё, плагин готов.
В следующей статье опишу как читать и записывать данные в файлах типа yaml.
Я предполагаю, что читатель уже умеет делать каркас для плагинов, по этому перейду сразу к коду.
Начнем мы с регистрации обработчиков событий. Это ключевой момент в написании плагинов, которые так или иначе взаимодействуют с игрой. Без них, плагин будет жить сам по себе. Но прежде чем такой обработчик зарегестрировать, его нужно же написать, так? Чем и займемся.
Создаем новый класс и делаем его потомком класса PlayerListener. Теперь добовляем в него метод onPlayerChat. Не трудно догадаться, что это и есть тот самый обработчик событий чата
Код:
package ru.dmitriymx.tutchat;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerListener;
public class DMXChatListener extends PlayerListener{
public void onPlayerChat(PlayerChatEvent event){
// тут и будет код. который обрабатывает событие чата
}
}
Код:
event.setFormat(ChatColor.AQUA + "%1$s" + ChatColor.WHITE + ": %2$s");
Код:
<%1$s>: %2$s
%1$s – имя
%2$s – сообщение
Да, можно было бы иначе написать код и ничего бы не изменилось:
Код:
event.setFormat(ChatColor.AQUA + event.getPlayer().getName() + ChatColor.WHITE + ": " + event.getMessage());
Итак. Обработчик написан. Теперь его нужно зарегестрировать в Событийном механизме Bukkit’а. Возвращаемся в класс DMXChat и объявляем переменную chatListener(в том же блоке, что и mclog):
Код:
private DMXChatListener chatListener = new DMXChatListener();
Код:
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_CHAT, chatListener, Event.Priority.Monitor, this);
chatListener - наш обработчик
Event.Priority.Monitor – приоритет события
this – плагин, на который регистрируется событие.
Теперь компонуем всё это в jar файл и кладем в папку plugins. Всё, плагин готов.
___________________
источник: dmitriymx.ru: Уроки по Bukkit