# 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