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

fromgate

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


Все материалы:
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:

fromgate

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


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

idea10.png


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

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



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

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



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

idea14.png


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

Java:
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 может загружать в качестве плагинов.

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

Java:
@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:

fromgate

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

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


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

Успехов!
 
Last edited:

fromgate

Administrator
Там когда код набираешь - видеть надо. IDEA за тебя пишет ;)
 

fromgate

Administrator
Так разработчики-то те же. Это по сути одан и та же IDE :)
 

seetch_

Pioneer
> Если кому-то не трудно напишите туториал с Eclipse и можно на англ. перевести?
 

RayDJGo

Pioneer
А дальнейшие инструкции по созданию будут? Интересно было бы создать плагин на животных
 

CrystalRu

Pioneer
А дальнейшие инструкции по созданию будут? Интересно было бы создать плагин на животных
Тут просто показан пример. Чтобы самому писать плагины нужно учить яву и API.
 

fromgate

Administrator
А дальнейшие инструкции по созданию будут? Интересно было бы создать плагин на животных
Я постараюсь сделать обучалки на основные вопросы:
  • как использовать конфиг;
  • как создавать команды;
  • как обрабатывать события;
  • ну и ещё какие-то.
 

Varfalomey

Developer (Level 3)
У меня столько идей, с командами.. но вообразить их не могу, ибо когда ввожу команду пишет как её использовать. Не мог ли бы ты, предоставить скелет плагина? (пробовал по ExamplePlugin)
 
Last edited:

fromgate

Administrator
Породолжение: Работа с конфигурацией

У меня столько идей, с коммандами.. но вообразить их не могу, ибо когда ввожу команду пишет как её использовать. Не мог ли бы ты, предоставить скелет плагина? (пробовал по ExamplePlugin)
Про команды, будет следующий туториал. Постараюсь к вечеру.
Готового скелета у меня пока нет. Я думаю к концу всех этих обучалок, мы получим скелет плагина )
 

Varfalomey

Developer (Level 3)
Решил я сегодня перейти на новую софтину описанную в этой теме.
Но вот, я почему то не понимал, почему плагин крашиться?
А всё оказываеться изза того что вы не указали название плагина! :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

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

Bruno

Пользователь
А если у меня нету ПК, есть программы для андроид устройств?
 

fromgate

Administrator
Тогда обрати внимание на плагин CatLoad и вообще не сообщения его автора @Doomhawk - у него тут самый продвинутый опыт по части разработки и запуска Nukkit без ПК :)
 

fromgate

Administrator
@Iggy
Ругается на то, что не та версия Java.

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

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

1-8-error.png
 
Last edited:
Top