[LiteCore] #1 Плагинописание PHP (Основы)

Здравствуйте дорогие друзья! Хотелось бы поделится с новичками в деле “Плагинов”.

У многих новичков возникает вопрос: А как мне самому научится писать плагины? Давайте разбиратся и учится!

Самое главное что нам нужно знать для написания плагина:

  • ООП в языке программирования php.
  • Основной синтаксис языка php.

Так как наше ядро сервера везде использует ООП языка php.

И так, самые нужные для нас интернет ресурсы:

  • https://php.net/ - Самый нужный для нас ресурс, там находятся все функции языка php.

В ядре LiteCore (Ядро сервера - это и есть сам сервер) есть самый главный файл для плагинов под названием: plugin.yml. В нем записывается вся информация о плагине. К примеру:

name: Название плагина
main: Путь к главному классу плагина
api:  Версия API плагина (У LiteCore это либо 2.0.0 или же 3.0.1)
version: Версия плагина
author: Автор плагина (Не обязательная строчка)

А вот как выглядит уже заполненный файл plugin.yml:

name: MyPlugin
main: plugin\Main (Обязательно в пути плагина указывать обратный слэш "\")
api:  2.0.0
version: 1.0
author: Dixsin

Далее идет самая главная часть: Структура плагина

Как примерно выглядит структура плагина:
структура

Вы можете спросить что же это за папка с названием src. А все просто! Это основная папка плагина где хранится основной класс и другие файлы.

В plugin.yml вы могли увидеть main: plugin\Main. Это и есть путь к главному классу в папке src.

В папке с плагином создается папка src и файл plugin.yml. В пункте main в файле plugin.yml указывается путь без упоминания папки src.

И так переходим к главному классу плагина. Чаще всего он называется Main.php.

В Main.php обычно указывается идентификатор языка php.

<?php
    //code...
?>

Между этими идентификаторами пишется функция namespace создающая пространство имен.

<?php
namespace "Тут указываются папки в которых лежит главный класс без учета самого класса и папки src";
?>

Далее мы вписываем импорты для работы плагина:

<?php
namespace plugin;

use pocketmine\plugin\PluginBase; # Самый главный импорт для плагина уже с помощью него мы можем создать включение выключение плагина.
?>

И так вот мы подходим к запуску / остановке плагина:

Первым делом создается класс плагина с названием файла главного файла.

<?php
namespace plugin;

use pocketmine\plugin\PluginBase; 

class Main /**Название файла главного класса*/ extends /**Унаследование*/ PluginBase/**Унаследование основного файла плагина*/ 
{
    /**
    * В файле PluginBase.php есть функция onEnable() - она отвечает за включение плагина.
    */
    public function onEnable()
    {
    /**
    * В данной строке мы получаем сам сервер а после из сервера получаем консоль. В консоли есть функция info($message); Она будет информировать о любом действии в консоли. Мы же просто вывели сообщение о включении
    */
        $this->getServer()->getLogger()->info("Плагин запущен");
    }
}
?>

Так же есть функция onDisable() она отвечает за выключение плагина:

<?php
namespace plugin;

use pocketmine\plugin\PluginBase; 

class Main /**Название файла главного класса*/ extends /**Унаследование*/ PluginBase/**Унаследование основного файла плагина*/ 
{
    /**
    * В файле PluginBase.php есть функция onEnable() - она отвечает за включение плагина.
    */
    public function onEnable()
    {
        $this->getServer()->getLogger()->info("Плагин запущен");
    }

    public function onDisable()
    {
    /**
    * В данной функции мы информируем сервер в консоли о выключении плагина.
    */
    $this->getServer()->getLogger()->info("Плагин остановлен");
    }
}
?>

Вот мы и разобрались о выводе информации в консоль при включении / выключении плагина. В следующем уроке я расскажу как использовать публичные функции в плагине.

Спасибо за внимание дорогие друзья!

3 симпатии

@Qyok Я надеюсь хорошо все описал…

Извини, но инструкция крайне плохая. Новичок ничего не сможет написать по ней.
Чего только стоит plugin.yml, который ты предлагаешь искать в ядре сервера…
Я дам 5 баллов за старание, но только за старание.

Я обьяснял что plugin.yml это главный файл плагина :slight_smile:

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

2 симпатии

я могу дать файл где учат плагинописанию но за баллы! @Qyok

Хэ, хуже только я писал ;D

О, Агори, братишка и ты тут)

Не ну а чё, я это, да…

:slight_smile:

Только тихо тут, даже для этого форума, очень тихо

Ну да, в этом, я с тобой полностью согласен.

Нада наводить суету…

Хзхз, насколько я понял, модерация чуть более жестокой стала. 2 раза накосячишь, удаление темы и бан аккаунта.

кому надо тот поймëт но если php первый язык будет трудно впринципе как и мне по началу

порой кажется что на форуме развитие мëртвая точка которая каждый раз сбрасывается)

хотя какой смысл сливать что то стоющие не слитое месяц тарифа на 24serv.pro того не стоит)

странный вопрос, а функция onEnable вообще нужна?)))

Конечно ибо без нее не происходит запуска плагина. Сервер не может обработать запуск. Эта функция заложена в PluginBase.php

Это чушь. Если бы функция \pocketmine\plugin\PluginBase::onEnable() была необходима она бы была объявлена абстрактной