Пишем свой первый плагин

Пишем свой первый плагин

Всем привет, и сегодня мы
Всех приветствую, в этом гайде я попробую подробно объяснить желающим писать свои плагины что это, как делается и с чего начать.

Итак, плагины мы будем писать под “семейство” ядер Genisys, а это значит, что нам требуются минимальные знания языка программирования php.

Если вы уже имели с ним дело - идем дальше, если нет - стоит изучить его основы, это совсем не сложно.

Для того чтобы начать писать код, нам нужен проводник и студия разработки.


С проводником все просто: большинство использует ES Проводник (удалён из Google Play), но я предпочитаю не смотреть рекламу, поэтому: X-Plore


Установили проводник, подключились по FTP к нашему серверу, идём дальше. Что со студией разработки? По запросу php ide мы можем найти несколько приложений,


но нас интересует AWD, так как он имеет подсветку синтаксиса, форматирование (красивое оформление) кода и поддержку FTP.


Скачиваем:


Скачали, установили, теперь настраиваем:




Выбираем папку plugins и сохраняем.

Пора приступить к самим плагинам. Чтобы понять его структуру, мы возьмём в пример самый простой плагин и посмотрим, как он работает.


  • Скачиваем шаблон, который я подготовил
  • Копируем папку Sample в папку plugins нашего сервера

Перезапускаем сервер, смотрим консоль:
IMG_20191230_103932
…и радуемся, потому что ошибок нет и все работает. :slight_smile:

Время посмотреть на структуру.
В общем её можно описать так:


Но в нашем случае, для наглядности, схема выглядит так:

  • Sample: главная папка плагина
  • src: папка, которая содержит исходный код плагина
  • Sample.php: главный класс, который будет выполнен сервером при включении плагина

Подробнее остановимся на plugin.yml.
Это конфиг, который содержит название плагина, его команды, разрешения и так далее.
Выглядит он так:

name: Sample
main: Bestaford\Sample
api: 3.0.1
version: 1
author: Bestaford
description: Пример плагина для начинающих.
  • name: Имя плагина
  • main: Путь к главному классу. Ещё раз посмотрите на схему выше, чтобы понять, как сервер ищет главный класс
  • api: Так как мы пишем плагины для Genisys, GenisysPro и LiteCore указываем 3.0.1. Это не очень важно, но плагин не запустится, если он сделан на других версиях api, например плагины для ядра Prismarine или более новых (старых) версий игры у нас работать не будут. Для PMMP указываем 3.0.0
  • version: Версия плагина. Может быть как цифрой (1), так и строкой (1.1.0-dev). Используйте, если планируете публиковать ваш плагин на форумах или в группах
  • author: Свободная строка, используйте, чтобы подписать Ваш плагин
  • description: Описание плагина, добавлять его не обязательно, просто знайте, что такое поле есть

Внимание!
Строго не рекомендуется использовать в названии плагина, в названии файлов и классов слова, которые могут быть использованы ядром, например Item, Server и прочие. Так же нельзя использовать слова, зарезервированные php. Лучше всего приписывать к названиям букву или слово, как это делают другие, например LordItem вместо Item (недавно был случай)


С конфигом закончили, посмотрим на код:

<?php

namespace Bestaford;

use pocketmine\plugin\PluginBase;

class Sample extends PluginBase {
	
	public function onEnable() {
		$this->getLogger()->info("Плагин запущен!");
	}
}
  • namespace: Папка, в которой находится класс. Должна совпадать с названием папки и должна быть правильно указана в пути к классу в файле plugin.yml
  • use: С помощью use мы включаем в наш плагин и можем использовать любые необходимые классы ядра, в первую очередь это PluginBase
  • onEnable: Это функция класса PluginBase, от которого мы унаследовали свой класс. Вызывается сервером при запуске плагина, а в нашем случае выводит в консоль сообщение об успешном запуске

Спасибо всем, кто прочёл до этого места :two_hearts:
Из этого гайда Вы узнали, из чего состоит плагин и как он работает, а в следующих гайдах я покажу, как обработать события, которые происходят на сервере и команды, которые посылают серверу игроки. :wink:

Слова для поиска:

как написать плагин
как писать плагины
плагинописание
гайд

17 Симпатий
Пишем свой первый плагин #2
[GENISYS] ОПИСАНИЕ привелегий
Помогите с плагином на майнинг ферму
Хелп срочно, начинающий плагинщик
Почему хостинг не видит плагин?
Хелпаните, почему не работает плагин?
Где можно научиться писать свои плагины?
Хелп pmmp 1.14
Какие языки нужны
Как изменить дроп с мобов? Genisys 1.1
Пишем свой первый плагин #2
Скажите хорошее приложение
Хелп срочно, начинающий плагинщик
Хелп срочно, начинающий плагинщик
Помогитте плз
Какие версии серверов Запускать?
Genisys плагин на бесплатный донат особый
Кодеры хелп мне плиз
Как зделать сроочнооо!
Подскажите что исправить в плагине
[1.1.Х] Подготовка к плагинописанию
Какая сдесь ошибка?
[GenesysPro] Плагинописания #1 События
[PMMP] Плагинописание | Конфиг
[PMMP] Плагинописание | События
Ошибка в команде
Кто научит писать плагины?
Срочно,и важно
Ребят помогите просто исправитт ошибку скрин в описании
Ребят помогите просто исправитт ошибку скрин в описании
Кодеры хэлп с плагом (решено)
Памагитее срочно
PlayerJoinEvent

В ютюб сложно зайти, написать уроки плагинописание. :thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking:

Всё равно не поймут

1 Симпатия

А ты дело говоришь:thinking::call_me_hand:

@Bestaford,а за что ES Проводник из Google Play удалили? Кстати, я нашёл способ не смотреть его рекламу.

Да за то, что это говнософт. На уровне Clean Master.

Ебаа ты умный!! Спс!!

Мне писать продолжение, или это никому не нужно?

3 Симпатий

Продолжай

Полезно для новичков

Очень круто, молодец :+1:

Очевидно же, потому что на PMMP одни лишь неадекваты :thinking:

Нет это не так

Осуждаю… Из-за кривой генерации лайткора я временно пересел на PMMP. Делаю там карту и радуюсь, что на нем работает MagicWE, с которым мир редачу на раз-два)

PMMP нельзя ставить за основу наверное… Теоретически плагины и на нем будут работать, если api указывать ниже в plugin.yml

api:
- 3.0.0-ALPHA7
- 3.0.0-ALPHA8
- 3.0.0-ALPHA9
- 3.0.0-ALPHA10
- 3.0.0-ALPHA11
- 3.0.0-ALPHA12

Я знаю про API , просто подгорело за “дискриминацию” PMMPшеров

Это технически устаревшее ядро, его тупо небезопасно использовать, так как любая атака может фатальной быть

Привет всем ищу человека кто будет писать плагины для меня по оплате договоримся

Какие примерно плагины нужны?

2 Симпатий