Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Туториал [урок] плагин чата для bukkit

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DmitriyMX, 22 ноя 2011.

  1. Автор темы
    DmitriyMX

    DmitriyMX Старожил Пользователь

    Баллы:
    153
    Skype:
    dmn550
    Да, много прошло времени с последней статьи про Bukkit плагины. Но поверьте, на то были причины.
    Я предполагаю, что читатель уже умеет делать каркас для плагинов, по этому перейду сразу к коду.

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

    Создаем новый класс и делаем его потомком класса 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){
          // тут и будет код. который обрабатывает событие чата
      }
    }
    Сплошной белый чат, в котором визуально сливаются имена и сообщения по моему уныл и скучен. Даешь красок! Но как? Очень просто. Всю необходимую информацию и инструменты нам уже предоставил PlayerChatEvent:
    Код:
    event.setFormat(ChatColor.AQUA + "%1$s" + ChatColor.WHITE + ": %2$s");
    А вы ожидали 10+ строк кода?)) Как видите, такая задача решается очень просто. “Но постой, а где тут имя игрока? Где его сообщение?” Опытным путем было выявлено, что по-умолчанию формат сообщений выглядит следующим образом:
    Код:
    <%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();
    А теперь регестрируем наш обработчик в событийном механизме Bukkit’а. В методе onEnabled() пишем:
    Код:
    getServer().getPluginManager().registerEvent(Event.Type.PLAYER_CHAT, chatListener, Event.Priority.Monitor, this);
    Event.Type.PLAYER_CHAT – событие, на которое вешается обработчик
    chatListener - наш обработчик
    Event.Priority.Monitor – приоритет события
    this – плагин, на который регистрируется событие.

    Теперь компонуем всё это в jar файл и кладем в папку plugins. Всё, плагин готов.
    [​IMG]
    В следующей статье опишу как читать и записывать данные в файлах типа yaml.
    ___________________​
     
    Grim, D_ART и z0z1ch нравится это.
  2. Хостинг MineCraft
    <
  3. 4erep99

    4erep99 Активный участник Пользователь

    Баллы:
    88
    У меня в плагин.умл ошибка
     
  4. Автор темы
    DmitriyMX

    DmitriyMX Старожил Пользователь

    Баллы:
    153
    Skype:
    dmn550
    Обновленная статья здесь
     
    Сникерсни нравится это.

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