
MapEngine is a map library plugin for minecraft paper servers, used to show images and video/streaming on maps
MapEngine is a map library plugin for paper servers. It provides a simple API to create maps with custom content.
Using lightweight and asynchronous techniques, MapEngine has a very low impact on server performance.

A hosted version of the javadoc can be found here.
| Server Version | Supported |
|---|---|
| Paper 1.21.11 | ✔️ |
| Paper 1.21.10 | ✔️ |
| Paper 1.21.9 | ✔️ |
| Paper 1.21.8 | ✔️ |
| Paper 1.21.7 | ✔️ |
| Paper 1.21.6 | ✔️ |
| Paper 1.21.5 | ✔️ |
| 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 has to be added as a dependency to the plugin.yml regardless of the build system used.
<repositories>
<repository>
<id>minceraft</id>
<url>https://repo.minceraft.dev/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>de.pianoman911</groupId>
<artifactId>mapengine-api</artifactId>
<version>1.8.11</version>
<scope>provided</scope>
</dependency>
</dependencies>
Gradle (groovy)
repositories {
maven {
url = 'https://repo.minceraft.dev/releases/'
name = 'minceraft'
}
}
dependencies {
compileOnly 'de.pianoman911:mapengine-api:1.8.11'
}
Gradle (kotlin)
repositories {
maven("https://repo.minceraft.dev/releases/") {
name = "minceraft"
}
}
dependencies {
compileOnly("de.pianoman911:mapengine-api:1.8.11")
}
public class Bar {
// getting the api instance
private static final MapEngineApi MAP_ENGINE = Bukkit.getServicesManager().load(MapEngineApi.class);
public void foo(BufferedImage image, BlockVector cornerA, BlockVector cornerB, BlockFace facing, Player viewer) {
// create a map display instance
IMapDisplay display = MAP_ENGINE.displayProvider().createBasic(cornerA, cornerB, facing);
display.spawn(viewer); // spawn the map display for the player
// create an input pipeline element
// this object can also be used to draw simple shapes and text
IDrawingSpace input = MAP_ENGINE.pipeline().createDrawingSpace(display);
// draw the image to the input pipeline element
input.image(image,0,0);
// draw a triangle
input.triangle(0, 0, 10, 10, 20, 0, 0xff0000ff);
// add a player to the pipeline context,
// making the player receive the map
input.ctx().receivers().add(viewer);
// enable floyd-steinberg dithering
input.ctx().converter(Converter.FLOYD_STEINBERG);
// enable per player buffering
input.ctx().buffering(true);
// flush the pipeline
// the drawing space can be reused
input.flush();
}
}
More detailed examples can be found in
the MinceraftMC/MapEngineExamples repository.
git clone https://github.com/MinceraftMC/MapEngine.git)cd MapEngine)./gradlew build on Linux/MacOS, gradlew build on Windows)The plugin jar can be found in the build → libs directory