# Developer Overview Observer is an event management system for Paper servers. It provides systems for capsules, elimination, lifesteal, decay, world events, custom recipes, pedestals, and more. The public API module (`Observer-API`) allows other plugins to query game state, access managers, and listen to custom events. --- ## Maven / Gradle The Observer-API artifact is hosted on JitPack. Add it as a `compileOnly` / `provided` dependency so that Observer is not shaded into your plugin jar. **Repository:** **Gradle (Kotlin DSL):** ```kotlin repositories { maven("https://jitpack.io") } dependencies { compileOnly("com.github.Lodestones:Observer-API:1.0.64") } ``` **Maven:** ```xml <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.github.Lodestones</groupId> <artifactId>Observer-API</artifactId> <version>1.0.64</version> <scope>provided</scope> </dependency> </dependencies> ``` --- ## plugin.yml Setup Add `Observer` as a dependency in your `plugin.yml`: ```yaml depend: - Observer ``` If Observer is optional for your plugin, use `softdepend` instead: ```yaml softdepend: - Observer ``` --- ## Accessing the API The API is accessed through the static `ObserverAPI` class. The API instance is available after Observer has been enabled. ```java import gg.lode.observerapi.ObserverAPI; import gg.lode.observerapi.IObserverAPI; IObserverAPI api = ObserverAPI.getApi(); if (api == null) { // Observer is not loaded return; } ``` --- ## Common Operations ### Get a manager All gameplay systems are exposed through manager interfaces. Access them from the API instance. ```java ICapsuleManager capsules = api.getCapsuleManager(); IEliminationManager elimination = api.getEliminationManager(); ILifestealManager lifesteal = api.getLifestealManager(); IDecayManager decay = api.getDecayManager(); IWorldEventManager worldEvents = api.getWorldEventManager(); ICustomRecipesManager recipes = api.getCustomRecipesManager(); IPedestalManager pedestals = api.getPedestalManager(); IMechanicsManager mechanics = api.getMechanicsManager(); IKitManager kits = api.getKitManager(); IPlayerManager players = api.getPlayerManager(); IRespawnManager respawn = api.getRespawnManager(); ITranslationManager translations = api.getTranslationManager(); ``` ### Listen to Observer events Observer fires custom Bukkit events that you can listen to like any other event. ```java import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public class MyListener implements Listener { @EventHandler public void onElimination(PlayerEliminatedEvent event) { Player player = event.getPlayer(); // Handle elimination } } ``` ### Check game mechanics ```java IMechanicsManager mechanics = api.getMechanicsManager(); boolean enabled = mechanics.isMechanicEnabled("some-mechanic"); ``` ### Work with lifesteal ```java ILifestealManager lifesteal = api.getLifestealManager(); lifesteal.dropHeart(location); ``` --- ## Related Pages - [[Observer/Developers/API Reference]] — Full interface documentation