10 Dynmap API
FlagCourier edited this page 2024-11-12 20:44:48 -06:00

This documentation doesn't contain full api docs for dynmap. You need a fundamental knowledge from java and the general non api usage from the dynmap.

Add the Dependency

Add the dynmap api as dependency to your maven or gradle project

Gradle

repositories {
    maven { url = "https://repo.mikeprimm.com/" }
}

dependencies {
    compileOnly "us.dynmap:DynmapCoreAPI:3.7-beta-6"
}

Maven

    <repositories>
        <repository>
            <id>MikeRepo</id>
            <url>https://repo.mikeprimm.com/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>us.dynmap</groupId>
            <artifactId>DynmapCoreAPI</artifactId>
            <version>3.7-beta-6</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

Register the dependency in your used platform

Make sure to register the dependency in your used platform.

Bukkit

For Bukkit based platforms you should add dynmap to the depend or softdepend array in the plugin.yml.

plugin.yml

...

depend:
  - dynmap

Accessing the dynmap api

Use the static method DynmapCommonAPIListener.register to register an instance of DynmapCommonAPIListener. The Dynmap plugin or mod will call the method apiEnabled(DynmapCommonAPI api) when the api becomes enabled.

Link to DynmapCommonAPIListener: https://github.com/webbukkit/dynmap/blob/v3.0/DynmapCoreAPI/src/main/java/org/dynmap/DynmapCommonAPIListener.java

Access the markerAPI:

MarkerSet markerAPI = api.getMarkerAPI();

Working with markers

To create a new marker you need a MarkerSet. You can either use an existing MarkerSet or create a new one.

Creating a new MarkerSet

MarkerSet set = markerAPI.createMarkerSet(
    /* Marker set ID */                 "setId",
    /* Marker set label */              "Display Name",
    /* Set of permitted marker icons */ null,
    /* Is marker set persistent */      false
);            

With the MarkerSet instance you can change the attributes. You can hide that set by default, set layer priorities, min and max zoom levels. For a full reference take a look in the MarkerSet interface.

Accessing an existing MarkerSet

MarkerSet set = markerAPI.getMarkerSet("setId");

Accessing marker icons

MarkerIcon icon = markerAPI.getMarkerIcon("building");

Registering new marker icons

MarkerIcon icon = markerAPI.createMarkerIcon("id", "title", inputStream);           

To receive an input stream from a .png file from your plugin you can use

plugin.getResource("myicon.png");

Creating a new marker

String htmlLabel = "<div>Hello World</div>"
Marker marker = set.createMarker(
    /* Marker ID */                  "uniqueMarkerId",
    /* Marker label */               htmlLabel,
    /* Process label as HTML */      true,
    /* World to display marker in */ "world",
    /* X coordinate */               10,
    /* Y coordinate */               20,
    /* Z coordinate */               30,
    /* Related MarkerIcon object */  icon,
    /* Marker is persistent */       false
);