[LiteCore, PM4, PM3] Написание СКРИПТОВ для PocketMine-MP

Введение

Ядро PocketMine-MP (и форки) поддерживает не только плагины, но и скрипты. Это мини-плагины, которые могут использоваться для реализации временного функционала и тестирования других плагинов.

Впервые слышу!

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

И как они выглядят?

Готовый скрипт представляет собой .php файл, который можно просто положить в папку plugins и он будет работать!

Hello World скрипт для PM4

<?php

/**
 * @author Gaprix
 * @name TestScript
 * @main Gaprix\TestScript
 * @api 4.0.0
 * @version 1.0.0
 */

namespace Gaprix;

use pocketmine\event\EventPriority;
use pocketmine\plugin\PluginBase;
use pocketmine\event\player\PlayerJoinEvent;

class TestScript extends PluginBase{

    public function onEnable(): void{
        $this->getServer()->getPluginManager()->registerEvent(PlayerJoinEvent::class, function(PlayerJoinEvent $event) : void{
            $event->getPlayer()->sendMessage("Привет, мир!");
        }, EventPriority::NORMAL, $this, true);
    }

}

Hello World скрипт для PM3 и LiteCore

<?php

/**
 * @author Gaprix
 * @name TestScript
 * @main Gaprix\TestScript
 * @api 3.0.0
 * @version 1.0.0
 */

namespace Gaprix;

use pocketmine\event\Listener;
use pocketmine\plugin\PluginBase;
use pocketmine\event\player\PlayerJoinEvent;

class TestScript extends PluginBase{

    public function onEnable(): void{
		$this->getServer()->getPluginManager()->registerEvents(new class implements Listener{
			function onJoin(PlayerJoinEvent $event){
				$event->getPlayer()->sendMessage("Привет, мир!");
			}
		}, $this);
    }

}

Объяснение

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

Результат

Хочу попробовать!

Для установки просто скопируйте этот файл в папку с плагинами и перезагрузите сервер.

PM4:
TestScript.php (602 Байта)

PM3/LiteCore:
TestScript.php (566 Байт)

2 симпатии

Хз зачем
Но круто

Привет мир зачем на eng писать если можно на russia перевести или если знаешь английский написать на русском

афигеть, а я и не знал про такую фичу

афигеть в я знал

Че за х**ню я сейчас прочитал и попытался понять?

Не очень удобно если чесно

1 симпатия

Это удобно только в некоторых случаях, поэтому и используется редко

Много кто пишет микроплагины и не знает что можно писать одним файлом и создают один плагин с названием “API” пихая туда все свои микроплагины.

У меня к тебе предложение. Нельзя убрать строку

shutdown-message: "Server closed"

из pocketmine.yml и просто добавить транслит по всем языкам?

Я не разработчик, а переводчик. Если хочешь, можешь сделать это и отправить Pull Request в репозиторий

Это я знаю. Разве ты сам не ищешь места где не переведено?

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

Ну так а я о чем

Повторюсь

Я задал вопрос в дискорде на счёт того, почему так не сделано. Подожду ответа

Отвечу за них.

Сделано это для того, чтобы удобнее было настроить сообщение, которое будет показываться.

Кому-то лучше будет написать тех.работы или т.п.

Эта строка, просто как примерный текст. Нужно ставить свое.

Поэтому и указано именно в конфигурации

Почему именно когда выключается сервер можно указать свое? А если кикнуло из-за ошибки, а если вайтлист?

Вайт лист также настраивается ведь.

Кик из-за ошибки…какой?)
Не встречал таких ошибок, из-за которых кикает

Ошибка при использовании комманд кикает игрока который юзал команду, а сервер не крашит