С чего начать: Первый плагин

Discussion in 'Разработка плагинов' started by fromgate, 8/1/16.

  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
Dismiss Notice
We welcome you on our site. This site is devoted to the Nukkit project and all that is connected with him. Here you can communicate, download plugins, also many other things get acquainted! Register the account right now :3
  1. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Как создать самый первый плагин
    Пошаговая инструкция для тех, кто ещё ни разу этого не делал ;)


    Все материалы:
    1. Первый плагин
    2. Работа с файлами конфигурации
    3. Обработка событий
    4. Команды

    1. Выбор IDE для разработки.
    Вообще писать Вы можете хоть в нотпаде, но удобнее делать это в специальном редакторе.
    Я все свои плагины под bukkit написал в Eclipse, первые плагины для Nukkit тоже делал в нём. Однако сейчас я использую IntelliJ IDEA и на мой взгляд, эта среда разработки значительно удобнее.

    2. Где взять IntelliJ IDEA?
    Так как с выбором среды разработки мы определеились ;) то теперь нужно её скачать: https://www.jetbrains.com/idea/download/
    idea00.png

    Здесь качаем версию "Community" её более чем достаточно для разработки любых плагинов для Nukkit.

    3. Устанавливаем и запускаем
    И видим что-то вроде (у Вас не будет в левой части списка проектов):
    idea01.png

    4. Создаем проект
    Жмём ссылку Create New Project. Появляется окно, в котором Вы должны выбрать тип создаваемого проекта. Я обычно выбираю Maven — это дает возможность, при необходимости воспользоваться каким-то Maven репозиторием. Но в принципе подойдёт и тип Java.
    idea02.png
    Если Вы воспользовались Maven, то необходимо просто нажать "Next" и заполнить параметры проекта, относящиеся к Maven:

    idea03.png
    Необходимо указать значения для GroupId и ArctifactId. В Maven у каждого проекта есть два уникальных параметра groupId artifactId. Чтобы не было путаницы groupId — обычно доменное имя организации или сайта проекта. artifactId - название проекта.

    После указания параметров Maven, указываем имя проекта:

    idea04.png

    Жмём кнопку "Finish" и проект создан!

    5. Создаем пакет проекта
    В левой части окна, оторажена структура проекта. Разворачиваем папку src — нам нужна папка /src/main/java. Кликаем на ней правой кнопкой мыши и создаем новый пакет:
    idea05.png

    Вводим имя пакета.

    idea06.png

    Всё пакет создан!

    6. Настраиваем библиотеку
    Поскольку мы будем писать плагины для Nukkit, то значит будем обращаться к его функциям, а значит сам сервер будет выступать у нас в качестве библиотеки.

    Для этого в окне проекта жмём кнопку Project Structure (Структура проекта):

    idea07.png

    В появившемся окне выбираем раздел Library (Библиотека), там давим кнопку "+" и выпадающем меню жмём "Java".

    idea08.png
     
    Last edited: 12/1/16
    Leonidius, j0sky, asyven and 4 others like this.
  2. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    После этого Вам будет предложено выбрать файл на диске — надо будет найти jar-файл сервера наккит (я лично положил его в отдельную папку).
    idea09.png

    7. Создаем главный класс проекта
    Главный класс проекта надо создавать в пакете, который мы создали раньше:

    idea10.png

    Вводим имя название класса:
    idea11.png

    Класс создан:
    idea12.png

    8. Создаем plugin.yml
    Каждому плагину необходим файл plugin.yml. В этом классе описаны некоторые настройки плагина и указано, какой класс у плагина главный.
    Без этого файла плагин не будет загружен.

    Файл создается в папке resources (ресурсы):
    idea13.png

    Файл называем (естественно) "plugin.yml"

    idea14.png

    В файле указываем текст:

    Code:
    name: FirstPlugin
    main: me.fromgate.firstplugin.FirstPlugin
    version: "0.0.1"
    author: fromgate, nukkit.ru
    api: ["1.0.0"]
    description: My first plugin
    Здесь:
    Поле "name" — название плагина
    "main" — пакет плагина + название главного класса плагина
    "version" — номер версии, обращаю внимание, что его нужно указывать в кавычках
    "api" — похоже это версии API, которые поддерживает плагин. Всегда пишем "["1.0.0"]".
    "description" — краткое описание плагина.

    Кстати, пусть Вас не пугает, сообщение:
    idea15.png

    Вам предлагаю установить плагин для работы с форматом YAML. По моему он не нужен, поэтому давите "Ignore extension".

    9. Пишем первый простой код
    Возвращаемся к редактированию основного класса плагина делаем следующее:
    Дописываем к названю плагина два слова "extends PluginBase". Это означает, что наш класс наследует класс PluginBase — такие классы nukkit может загружать в качестве плагинов.

    В самом классе создаем метод:

    Code:
    @Override
    public void onEnable(){
    this.getLogger().info(TextFormat.RED+"My first plugin enabled");
    }
    В процессе набора текста, редактор может сообщать, что какие-то классы ему неизвестны. Как правило, достаточно просто нажать сочетание клавиш Alt+Enter, чтобы необходимые пакеты были указаны в разделе импортируемых.

    idea16.png

    В приниципе первый плагин готов! Можно компилировать!

    10. Компилируем плагин
    Снова давим кнопку "Project Structure" и переходим к разделу "Artifacts".
    Жмём на плюсик, выбирам "JAR", потом "Empty":

    idea17.png

    Открывается окно настройки проекта.
    Здесь нужно:
    • Задать название (Name)
    • Указать директорию куда будет компилироваться файл (я указываю директорию плагинов моего тестового сервера)
    • Перенести мышкой из правой части панели "Available Elements" в левую элемент 'FirstPlugin' compile output
    • И задать галочку "Build on make"
    idea18.png
     
    Last edited: 11/1/16
    Leonidius, j0sky, Andrey and 2 others like this.
  3. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Жмём Ok, переходим в редактор и жмём сочетание клавиш Ctrl+F9 и....
    idea19.png

    Всё! Плагин скомпилировался и лежит там где вы его указали. Можно запускать сервер!

    11. Проверяем плагин
    Для этого мы просто запускаем сервер и смотрим в консоль.
    Если Вы увидите там наше сообщение, значит Вы всё сделали правильно!
    idea20.png

    Успехов!
     
    Last edited: 11/1/16
    Leonidius, Tee7even and Varfalomey like this.
  4. Varfalomey

    Varfalomey Developer (Level 3)

    Messages:
    32
    Likes Received:
    12
    Minecraft:
    Varfalomey
    Хорошая статейка, может тоже перейду на IntelliJ IDEA ;)
     
    FenTonIZzZ and fromgate like this.
  5. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Там когда код набираешь - видеть надо. IDEA за тебя пишет ;)
     
  6. Varfalomey

    Varfalomey Developer (Level 3)

    Messages:
    32
    Likes Received:
    12
    Minecraft:
    Varfalomey
    В прочем так-же как и на PHPStorm;)
     
  7. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Так разработчики-то те же. Это по сути одан и та же IDE :)
     
  8. Varfalomey

    Varfalomey Developer (Level 3)

    Messages:
    32
    Likes Received:
    12
    Minecraft:
    Varfalomey
    Вот изза этого, я и хочу на неё перейти! :rolleyes:
     
    fromgate likes this.
  9. seetch_

    seetch_ Pioneer

    Messages:
    1
    Likes Received:
    0
    Minecraft:
    seetch_
     
  10. RayDJGo

    RayDJGo Pioneer

    Messages:
    2
    Likes Received:
    0
    Minecraft:
    RayDJGo
    А дальнейшие инструкции по созданию будут? Интересно было бы создать плагин на животных
     
  11. CrystalRu

    CrystalRu Pioneer

    Messages:
    1
    Likes Received:
    0
    Minecraft:
    CrystalRu
    Тут просто показан пример. Чтобы самому писать плагины нужно учить яву и API.
     
  12. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Я постараюсь сделать обучалки на основные вопросы:
    • как использовать конфиг;
    • как создавать команды;
    • как обрабатывать события;
    • ну и ещё какие-то.
     
  13. Varfalomey

    Varfalomey Developer (Level 3)

    Messages:
    32
    Likes Received:
    12
    Minecraft:
    Varfalomey
    У меня столько идей, с командами.. но вообразить их не могу, ибо когда ввожу команду пишет как её использовать. Не мог ли бы ты, предоставить скелет плагина? (пробовал по ExamplePlugin)
     
    Last edited: 9/1/16
  14. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Породолжение: Работа с конфигурацией

    Про команды, будет следующий туториал. Постараюсь к вечеру.
    Готового скелета у меня пока нет. Я думаю к концу всех этих обучалок, мы получим скелет плагина )
     
  15. Varfalomey

    Varfalomey Developer (Level 3)

    Messages:
    32
    Likes Received:
    12
    Minecraft:
    Varfalomey
    Решил я сегодня перейти на новую софтину описанную в этой теме.
    Но вот, я почему то не понимал, почему плагин крашиться?
    А всё оказываеться изза того что вы не указали название плагина! :D
    Code:
    main: me.fromgate.firstplugin.FirstPlugin
    version: "0.0.1"
    author: fromgate, nukkit.ru
    api: ["1.0.0"]
    description: My first plugin
    У вас сейчас там так, поправьте :rolleyes:
     
    fromgate likes this.
  16. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    А спасибо. Это видно я удалил после того как подключил подсветку синтаксиса )
     
  17. Bruno

    Bruno Пользователь

    Messages:
    13
    Likes Received:
    1
    Minecraft:
    Bruno
    А если у меня нету ПК, есть программы для андроид устройств?
     
  18. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    Тогда обрати внимание на плагин CatLoad и вообще не сообщения его автора @Doomhawk - у него тут самый продвинутый опыт по части разработки и запуска Nukkit без ПК :)
     
  19. Iggy

    Iggy Pioneer

    Messages:
    17
    Likes Received:
    1
    Minecraft:
    Iggy
    Не могу скомпилировать свой плагин из-за этой ошибки. Хотя в настройках и так стоит версия 1.8 o_O
     

    Attached Files:

  20. fromgate

    fromgate Administrator

    Messages:
    665
    Likes Received:
    186
    @Iggy
    Ругается на то, что не та версия Java.

    Проверьте, что у Вас установлена 8-ая версия Java.

    А потом, проверьте проект (как должно быть, я подсветил красным):

    1-8-error.png
     
    Last edited: 8/3/16

Share This Page