--- title: "For mod developers - Charted wiki" description: "What other mods can do with Charted, the rules every call follows, and how to call it without making it a requirement." url: https://voxelsprout.com/charted/wiki/api --- [Charted](https://voxelsprout.com/charted) [Wiki](https://voxelsprout.com/charted/wiki)For mod developers # For mod developers What other mods can do with Charted, the rules every call follows, and how to call it without making it a requirement. Charted has four public APIs, all in the package `com.charted.api` and all on the client. A modpack can also ship waypoints without any code. | API | What it is for | Since | | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----- | | [ChartedWaypoints](https://voxelsprout.com/charted/wiki/waypoints-api) | The world's waypoints: read, add and remove your own, hear about changes. | 0.1.0 | | [ChartedMarkers](https://voxelsprout.com/charted/wiki/markers-api) | Points and areas of your own on the minimap and world map: claims, towns, quest targets. | 0.1.0 | | [ChartedMap](https://voxelsprout.com/charted/wiki/map-api) | Open the world map on a spot, add to its right-click menu, hide the minimap for a while, what the map knows about a column. | 0.1.0 | | [ChartedActions](https://voxelsprout.com/charted/wiki/actions-api) | Charted's quick actions, for shortcut wheels. | 0.1.0 | | [waypoints.json](https://voxelsprout.com/charted/wiki/modpack-waypoints) | Waypoints a modpack ships, added once to each world they are for. | 0.1.0 | Only the `com.charted.api` package is stable. Everything else can change in any release, and a mixin into Charted's other classes will break. ## The rules every call follows * Every call is a static method taking and returning plain JDK types, so a mod can call it by reflection without compiling against Charted. * Client side, client thread only (marks may be set from any thread). Call `isAvailable()` first; when it is false every call does nothing and returns empty, null or false. Nothing throws. * Whatever a mod adds goes under an **owner**, its own mod id. `ChartedMap.release(owner)` takes all of it away again. Code you hand in that throws is logged once and left out. * The player stays in charge: waypoints a mod adds are theirs to edit and delete, listed under the mod's name. ## Keep Charted optional Charted is client-side, and most players of your mod will not have it. Two ways to call it without making it a requirement: * Check `FabricLoader.getInstance().isModLoaded("charted")`, or on NeoForge `ModList.get().isLoaded("charted")`, and keep the calls in a class of their own, so Charted's classes only load when it is there. * Or call it by reflection. Every call takes only JDK types, so there is nothing to compile against. See the [example](https://voxelsprout.com/charted/wiki/markers-api#without-a-compile-dependency). Client initializer ```java public final class MyModClient implements ClientModInitializer { @Override public void onInitializeClient() { if (FabricLoader.getInstance().isModLoaded("charted")) { ChartedCompat.init(); } } } // A class of its own: Charted's classes only load when Charted is there. final class ChartedCompat { static void init() { ChartedMarkers.point("mymod", "spawn", "minecraft:overworld", 0, 0, 0x3080FF, "Spawn"); } } ``` Charted runs on Fabric on 1.21.1 to 26.3, and on NeoForge on 26.1.2 to 26.3\. It is client-side only, so call it from client code. ## Questions Something the API should do, or something that does not work: ask on [Discord](https://discord.gg/CvdkGbEW4y). [Previous Keys and commands](https://voxelsprout.com/charted/wiki/keys-and-commands) [Next Waypoints API](https://voxelsprout.com/charted/wiki/waypoints-api) Something missing or wrong on this page? Say so on [Discord](https://discord.gg/CvdkGbEW4y).