*(изначально я хотел затронуть onLoad()
, onEnable()
и onDisable()
Мы даже плагин не создали чтобы на примере показать работу , давайте исправим это.
Создание базового плагина
Сперва убедитесь что у вас есть сервер на ядре PocketMine-MP 5. Так же установите на свой сервер плагин DevTools (данный плагин просто необходим для всех разработчиков плагинов, оно дает небольшие но ОЧЕНЬ удобные инструменты для плагинописателей). Истинная цель DevTools заключается в том, что оно позволяет загружать на сервер плагины в виде папки, хотя изначально ядро кроме формата .phar ничего не принимает. Это даст нам возможность постоянно не конвертировать плагин в .phar и обратно.
Приступим
🏁 Создание плагина (автомат)
Если у вас установлен плагин DevTools, то введите команду:
genplugin <name> <author>
Вместо <name>
укажите название для желаемого плагина (у меня это Test).
Вместо <author>
укажите автора для плагина (у меня это tester).
После ввода команды плагин создаст скелет плагина и отправит вам путь до него.
🛠️ Создание плагина (механика) (👍)
Перейдите в папку плагинов (это <ваш корневой сервер>/plugins/
).
Создайте папку для будущего плагина и назовите его как желаете назвать сам плагин.
Далее перейдите в созданный каталог и создайте новый файл под названием plugin.yml
а так же новую папку под названием src
.
(В общем у вас должно быть 2 объекта в папке)
Перейдите в каталог src
и тут вам уже нужно будет решить как вы построите путь к главному классу.
Рекомендации 👍
Столбец 1 | Столбец 2 |
---|---|
<название>\<автор>\ |
Test\DinnerBone\ |
<название>\ |
Test\ |
<автор + сокращённое название>\ |
DinnerBoneTST\ |
<уникальное слово связанный с плагином>\ |
testing\ |
pmmp\<название>\ |
pmmp\Test\ |
Если вы решились с путем, то начнем.
Создавайте папки так, как указано вами придуманном пути.
Пример
Если ваш путь это DinnerBone\Test\Tutorial\
, то вам нужно будет создать папку DinnerBone
, после внутри него ещё папку Test
, а после опять внутри созданной папки создать папку Tutorial
и.т.д пока не закончится вами созданный путь. Если посмотрите путь до каталога в котором вы находитесь, то вы заметите что путь одинаковый с тем, что вы придумали.
После создания пути, создайте главный класс, он же файл .php. В качестве названия можно установить что угодно, но настоятельно рекомендуется Main.php
или Loader.php
(если вы собираетесь написать средний или сложный плагин, но нам этого пока что не нужно, поэтому возьмём Main.php
).
После создания файла откройте его в удобном вам редакторе.
<?php
namespace Plugin;
use pocketmine\plugin\PluginBase;
class Main extends PluginBase
{
}
Вставьте этот кусок кода в ваш главный класс (примечание, это ваш Main.php
).
Обратите внимание на namespace
- это называется Пространство имен. Если вы не в курсе что это, сперва изучите его по лучше.
Замените Plugin
в namespace
на свой путь (убрав в конце \
). К примеру мой путь до данного класса это DinnerBone\Test\Tutorial\
, значит мне нужно будет заменить Plugin
на DinnerBone\Test\Tutorial
.
Мой результат
namespace DinnerBone\Test\Tutorial;
На этом ещё не всё.
Возвращаемся в корневую папку плагина (это каталог где расположен plugin.yml
). Теперь надо настроить plugin.yml
. Файл plugin.yml
необходим для функционирования каждого плагина. Он содержит свойства и правила, которым должны удовлетворять плагины для правильной загрузки. Короче говоря, plugin.yml
это некий паспорт для плагина, который пропускает его на сервер, где он уже загружается и начинает функционировать.
name: PluginName
version: 1
api: 5.0.0
main: PluginNamespace
Вставьте это в файл plugin.yml
своего плагина, обязательно изменив пункты name
и main
(не обязательно, но так же можно изменить version
).
name
- это название плагина. Благодаря названию, другие плагины могут работать совместно без никаких трудностей, а так же название отличает данный плагин от других. Придумайте что-то уникальное
main
- это путь до главного класса плагина. Настроить его достаточно легко. Скопируйте путь который вы указывали в namespace
в главном классе Main.php
, вставьте его заместо PluginNamespace
. Далее добавьте в конце "" чтобы показать что путь ещё не окончен, и введите название главного класса без расширения (без .php).
Мой результат
main: DinnerBone\Test\Tutorial\Main
Вроде всё!
Запуск 
При включении сервера плагины сами автоматически начнут загружаться и запускаться если имеют файл plugin.yml
.
FAQ
Что значит ошибка “main class not found
”
Это значит что сервер не смог найти главный класс (Main.php
) плагина. Проверьте правильность пути до главного класса в plugin.yml
→ main
, Main.php
→ namespace
, а также путь созданных папок.
Что значит “version
” и “api
” в plugin.yml
?
version
- это версия плагина. Тут вы можете вставить что угодно, но рекомендуется версии в таком виде, как x.x.x
или x.x
(пример: 1.0.0
, 1.0
), так же не забывайте ставить ключевые слова по типу beta
, alpha
и.т.д если уже планируете написать что-то большое, но оно находится на какой-то стадии разработки.
api
- это версия API который необходим для работы плагина. Выше в теме было установлено 5.0.0
, т.к это версия API ядра PocketMine-MP 5.
Что значит ошибка “undefined array key “version” (“name”, “api”, “main”)”
Это значит что в plugin.yml
отсутствует необходимый параметр (в вашем случае это параметр version
). В plugin.yml
обязательно должны присутствовать такие параметры, как name
, version
, api
и main
, без них плагин не запустится.