[PMMP5] Плагинописание #3 - load, enable, disable

В данной теме я затрону такие функции для вашего плагина, как onLoad(), onEnable() и onDisable().


Сперва что эти функции из себя представляют? Данные функции вызываются сервером при загрузке, включении или выключении вашего плагина. Они позволяют легко выполнять какие либо действия если это необходимо для плагина.

onLoad() - вызывается когда ваш плагин загрузили и готовят к запуску. (Вызывается при включении сервера)

onEnable() - вызывается когда плагин запустили. (Вызывается при включении сервера)

onDisable() - вызывается когда плагин готовят отключить. (Вызывается при отключении сервера или если плагин пытаются отключить)


Вставьте следующий код в ваш плагин:

public function onLoad(): void
{
    // Code
}

public function onEnable(): void
{
    // Code
}

public function onDisable(): void
{
    // Code
}

(Данный код обязательно должен находиться внутри главного класса)

Пример
<?php

namespace Plugin;

use pocketmine\plugin\PluginBase;

class Main extends PluginBase
{
	public function onLoad(): void
	{
		// Code
	}

	public function onEnable(): void
	{
		// Code
	}

	public function onDisable(): void
	{
		// Code
	}
}

И если сейчас попытаться запустить сервер, то плагин загрузится, но действий никаких не будет :frowning_face:, давайте исправим это.

К примеру дадим какое-то действие для onLoad(). Зная что эта функция вызывается при загрузке плагина, вызовим логгер о том, что плагин реально загрузился.

Что такое логгер?

Logger - это экземпляр одного из классов PocketMine-MP, позволяющий записывать сообщения в лог-файл сервера (так же и в консоль). Об этом мы подробно поговорим в следующем уроке.


Внутрь функции добавьте следующую строку

$this->getLogger()->info("Я загрузился!");
// Вместо "Я загрузился можно поставить другой текст

Как итог у вас должно выйти так

public function onLoad(): void
{
    $this->getLogger()->info("Я загрузился!");
}

Сохраните файл и запустите сервер. Если всё сделано правильно, то в консоле вы увидите лог:

[14:36:14.619]  [Server thread/INFO]:  [Test] Я запустился!

(В логе вместо “Test” будет название вашего плагина)

Это значит что всё отлично!


Теперь вставьте ту же строку, но уже в функцию onEnable() и onDisable() предварительно заменил текст на запустился и отключился.

Пример
public function onEnable(): void
{
    $this->getLogger()->info("Я запустился!");
}

public function onDisable(): void
{
    $this->getLogger()->info("Я отключился...");
}

И сохраните всё.

Как итог у вас должны выводится логи “Я загрузился!” и “Я запустился!” при включении сервера, а так же лог “Я отключился…” при выключении сервера.


:grey_question: FAQ

Зачем эти функции нужны?

Данные функции необходимы если вы пишите что-то крупное и необходимо зарегистрировать команды, инициализировать слушать событий и.т.д.

Зачем именно public перед function?

Это называется типы функций. public более распространенный, но так же можно использовать и тип protected.

в ютубе более понятнее ответят
зачем говорить одно и тоже

Что? Эти методы не являются обязательными в коде. Плагин будет работать и без них

АХАХАХАХАХП

бля чел какие уроки, тебе самому их надо бы

шизик

Самое обязательное это бесполезный спам в консоли

Ок

Ну ок. Давай тогда велосипед изобретем вместо логов

удаляй тему
одну хуйню высказал

Лень

Это называется модификатором доступа

Причем тут это, в данном случае это просто вывод бесполезного текста в логи

чат гпт лучше объясняет

1 лайк

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