Работа с Config` ами

Для всех примеров я буду использовать последнюю версию pmmp (4). В случае с другими ядрами, может отличаться только пространство имён.

импорт:

use pocketmine\utils\Config;
Создание
$name = "config.json";
$type = Config::JSON; 

$config = new Config($this->getDataFolder() . $name, $type);

где переменная $name хранит имя конфига, $type - тип конфига. для примера использовался json конфиг.

getDataFolder - это метод, который возращает расположение папки plugin_data, в которой обычно хранят все конфиги.

  1. Запись данных:
$key = "значение ключа";
$data = "значение"; #может быть обычным массивом []

$config->set($key, $data);
$config->save(); #сохраняет данные, которые ты записал 
#если это не сделать, то конфиг не изменится 

  1. Получение данных:
$data = $config->get($key); 

если под данным ключом был записан массив, то он и вернётся, если значение стандартных типов, то оно и вернётся.


  1. Занятость ключа в конфиге:
$exist = $config->exists($key); #bool; вернётся истина, если ключ существует 

  1. Удаление ключа:
$config->remove($key); #удаляет этот ключ из конфига 
$config->save(); 

нужно сохранить конфиг, чтобы данные обновились

  1. Получение всего конфига:
$data = $config->getAll(); #array

возращает весь конфиг в виде массива


Папка resources

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

возьмём в пример находящийся там файл config.yml, который будет хранить в нем эти данные:

default: ["value", "value2"]

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

$resource = $this->getResource("config.yml"); 

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

$contents = stream_get_contents($resource);

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

$config = yaml_parse($contents);

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

2 лайка

@qq_BCEM, тебе между прочем сделал.

Я уже читаю

Ну суть я понял, спасибо

Это и пм3 вообще-то.

Да знаю, он ради примера 4 взял

чел, я написал, что делал все на pm4, но может как совпадать, так и нет. отличаться может только пространство имён

или если методы были изменены в ядре

Кажись понял, щя попробую

А я тебя узнал, помню времена ты нас обсирал с вартим)

фууу, ты чо, я засирал вартима, а дурашки меня просто бесили

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

я и никогда не был в этой сфере, серьезно этим и не занимался, мне просто нравится писать иногда плагины

2 лайка

Ботами как и я занимаешь?)

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

Крут, а я ботами дс JavaScript


Малая часть там и есть modal

1 лайк

прикольно, не люблю правда ява скрипт

От python и Java особо мало чем отличаются, лишь возможностями

python, java и js это абсолютно разные языки для разных сфер применения

и очень сильно синтаксисом отличаются, как по мне у ява скрипт он самый ужасный и неприятный