

MapEngine
Активный0.0
Установок
0
Последнее обновление
9 месяцев назад
Версии
1.19.3 — 1.21.4
Сервер
Библиотеки
Утилиты
MapEngine
MapEngine представляет собой специализированную библиотеку для серверов Paper, предназначенную для работы с картами в Minecraft. Данное решение предлагает разработчикам удобный API для создания карт с произвольным содержимым, используя при этом оптимизированные методы работы, которые практически не влияют на производительность сервера.
Основные возможности
Библиотека обладает широким набором функций, включая:
- Конвейерный API для создания пользовательских обработчиков
- Асинхронную отрисовку контента
- Полностью пакетную систему передачи данных
- Опциональное сглаживание изображений по алгоритму Флойда-Стейнберга
- Группировку слоев для значительного снижения сетевого трафика
- Индивидуальную буферизацию для каждого игрока с передачей только измененных пикселей
- Объединение пакетов для предотвращения разрывов изображения
- Инструменты рисования (текст, компоненты, линии, треугольники, прямоугольники, круги, эллипсы, многоугольники)
График производительности кэша преобразования цветов

Прямая трансляция через RTMP на картах
Пример прямой трансляции на картах. Поток воспроизводится на массиве карт размером 7x4. Источник трансляции имеет разрешение 1920x1080@20 и передается через OBS.
Сглаживание по Флойду-Стейнбергу
Пример работы сглаживания по алгоритму Флойда-Стейнберга. Поток воспроизводится на массиве карт размером 7x4. Источник трансляции имеет разрешение 1920x1080@20 и передается через OBS.
Поддерживаемые версии
Версия сервера | Поддержка |
---|---|
Paper 1.21.4 | ✔️ |
Paper 1.21.3 | ✔️ |
Paper 1.21.2 | ✔️ |
Paper 1.21.1 | ✔️ |
Paper 1.21 | ✔️ |
Paper 1.20.x | ✔️ |
Paper 1.19.4 | ✔️ |
Paper 1.19.3 | ✔️ |
Использование
Для работы с MapEngine необходимо добавить зависимость в файл plugin.yml
независимо от используемой системы сборки.
Maven
xml <repositories> <repository> <id>tjcserver</id> <url>https://repo.thejocraft.net/releases/</url> </repository> </repositories>
xml <dependencies> <dependency> <groupid>de.pianoman911</groupid> <artifactid>mapengine-api</artifactid> <version>1.8.7</version> <scope>provided</scope> </dependency> </dependencies>
Gradle (groovy)
groovy repositories { maven { url = 'https://repo.thejocraft.net/releases/' name = 'tjcserver' } } dependencies { compileOnly 'de.pianoman911:mapengine-api:1.8.7' }
Gradle (kotlin)
kotlin repositories { maven("https://repo.thejocraft.net/releases/") { name = "tjcserver" } } dependencies { compileOnly("de.pianoman911:mapengine-api:1.8.7") }
Пример кода
public class Bar {
// получение экземпляра API
private static final MapEngineApi MAP_ENGINE = Bukkit.getServicesManager().load(MapEngineApi.class);
public void foo(BufferedImage image, BlockVector cornerA, BlockVector cornerB, BlockFace facing, Player viewer) {
// создание экземпляра отображения карты
IMapDisplay display = MAP_ENGINE.displayProvider().createBasic(cornerA, cornerB, facing);
display.spawn(viewer); // отображение карты для игрока
// создание элемента конвейера ввода
// этот объект также может использоваться для рисования простых фигур и текста
IDrawingSpace input = MAP_ENGINE.pipeline().createDrawingSpace(display);
// отрисовка изображения в элементе конвейера ввода
input.image(image,0,0);
// рисование треугольника
input.triangle(0, 0, 10, 10, 20, 0, 0xff0000ff);
// добавление игрока в контекст конвейера,
// чтобы игрок получал карту
input.ctx().receivers().add(viewer);
// включение сглаживания по Флойду-Стейнбергу
input.ctx().converter(Converter.FLOYD_STEINBERG);
// включение буферизации для каждого игрока
input.ctx().buffering(true);
// завершение работы конвейера
// пространство для рисования можно использовать повторно
input.flush();
}
}
Сборка проекта
- Клонируйте проект (
git clone https://github.com/TheJoCraftNET/MapEngine.git
) - Перейдите в клонированную директорию (
cd MapEngine
) - Соберите JAR-файл (
./gradlew build
на Linux/MacOS,gradlew build
на Windows)
Собранный файл плагина будет находиться в директории build
→ libs