[Genisys] PhotoMap - Создает фотографию вашего мира

Предисловие

Данный плагин был написан полностью мной.

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

Насчёт оптимизации скажу, что в данном проекте она была не сильна мне нужна

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

Описание:

Данный плагин сделает фотографию вашей карты на сервере. В соотношении 1 к 1.

Запуск
Первый запуск

Первый запуск
Часть скриптов для запуска плагина написана на python.

Поэтому для работы скрипта нужно установить библиотеку Pillow

  • apt install pip

  • pip install Pillow

Далее устанавливаем .zip файл как обычный плагин

Остальные 3 файла копируем в root

Запуск

Чтобы запустить плагин достаточно просто загрузить его на сервер

Он сам включится после перезагрузки!

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

  • python3 map.py

Советую почитать примечания

Примечания

Примечания

Данный плагин не приспособлен для использования обычными людьми

Есть множество аспектов, которые вы должны знать перед использованием плагина

  • По стандарту будет прогружаться карта 2048 на 2048, на 1024 блока от нулевых координат

  • Данный плагин будет использовать все ресурсы сервера. Поэтому во время его использования сервер будет не доступен

  • У плагина отсутствует фишка с удалением бесполезной оперативной памяти. Поэтому советую заранее ограничить ее использование в pocketmine.yml

  • В связи с отсутствием удаления оперативной памяти сервер должен будет постоянно перезагружаться. Так что советую сразу прописать ./start.sh -l

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

  • Файл map.png должен иметь разрешение немного больше чем количество прогруженных координат

  • Для изменения координат прогрузки вам нужно будет изменить их в плагине и в map.py. При изменении координат в map.py нужно будет дописать +(то число которое нужно чтобы при сложении самой маленькой координаты в сумме давало 1). К примеру по стандарту стоит +1025 с самой маленькой координатой -1024

  • В среднем на карту 10к на 10к блоков уходит 4 часа и 1,5-2 гигабайт памяти

Остальное находится во вкладке Кто заинтересовался

Примеры

Фотографии:

Вот одна из фотографий, которые воспроизвёл данный плагин

Данная фотография имеет разрешение примерно 2048 на 2048 и показывает 1024 блока в каждую сторону от нулевых координат

Вот все исходники без потери качества

Кто заинтересовался

Кто заинтересовался

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

  • При прогрузке большой карты библиотека PIL может жаловаться на слишком большую фотографию. Это можно исправить стерев лимит фотографии в самой библиотеке

  • Скрипт на python работает довольно быстро хотя для больших карт нужно создавать screen

По поводу оптимизации

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

  • Немного подправить сам код

  • Запустить сразу несколько серверов с одной и той же картой (нужно немного подправить плагин)

  • Данные которые записываются на файл можно спокойно сократить. Думаю можно просто оставить id блока (Поменяв естественно map.py)

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

Проверялось на Genisys версия 0.14
PhotoMap.zip (2.9 КБ)

2 симпатии

Оу, святые человечки

1 симпатия

А есть вариант на Генезис 1.1?

Перепиши

1 симпатия

Впринципе должно работать и на 1.1

1 симпатия

В plugin.yml можно поменять на api: 3.0.0 и плагин должен будет работать

1 симпатия

Traceback (most recent call last):
File “map.py”, line 1, in
from PIL import Image
ModuleNotFoundError: No module named ‘PIL’

А если инглиш знаешь?

для начала надо убедиться, что он умеет читать :lying_face:

1 симпатия

Действительно

1 симпатия

pip install и модуль который тебе нужен

pip install PIL
Collecting PIL
Could not find a version that satisfies the requirement PIL (from versions: )
No matching distribution found for PIL

pip install Pillow

Хм..хм..хм, что это такое... нинаю

даже в самом посте написано:

Даже так

Уже установленно

почему не меняешь оттенок блока в зависимости от его координаты Y?

Лень, если кому-то будет нужно то сами сделают

Ну, поиспользуй python3 map.py