# Developer Overview
Barrier is a world border plugin for Paper servers that supports circle, square, and 3D box border types. The Barrier-API module lets other plugins control borders programmatically — set radius, change border shape, configure storm damage, and listen to border events.
---
## Maven / Gradle
The Barrier-API artifact is hosted on JitPack. Add it as a `compileOnly` dependency so that Barrier is not shaded into your plugin jar.
**JitPack Repository:**
*Gradle (Kotlin DSL):*
```kotlin
maven("https://jitpack.io")
```
*Maven:*
```xml
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
```
**Dependency:**
*Gradle (Kotlin DSL):*
```kotlin
compileOnly("com.github.Lodestones:Barrier-API:1.0.34")
```
*Maven:*
```xml
<dependency>
<groupId>com.github.Lodestones</groupId>
<artifactId>Barrier-API</artifactId>
<version>1.0.34</version>
<scope>provided</scope>
</dependency>
```
Add `Barrier` as a `depend` or `softdepend` in your `plugin.yml`:
```yaml
softdepend:
- Barrier
```
---
## Accessing the API
The API is accessed through the static `BarrierAPI` class. The API instance is available after Barrier has been enabled.
```java
import gg.lode.barrierapi.BarrierAPI;
import gg.lode.barrierapi.IBarrierAPI;
IBarrierAPI api = BarrierAPI.getApi();
if (api == null) {
// Barrier is not loaded
return;
}
```
---
## Common Operations
### Get the storm (border) for a world
```java
IStorm storm = api.getStorm(world);
```
### Set the border radius
```java
storm.setRadius(500);
double radius = storm.getRadius();
```
### Change the border type
```java
import gg.lode.barrierapi.StormType;
storm.setStormType(StormType.CIRCLE);
storm.setStormType(StormType.SQUARE);
storm.setStormType(StormType.SQUARE_BOXED);
```
### Configure storm damage
```java
storm.setDamage(2.0);
storm.setDamageBuffer(5.0);
```
### Listen to border events
```java
import gg.lode.barrierapi.event.PlayerEnterStormEvent;
import gg.lode.barrierapi.event.PlayerLeaveStormEvent;
import gg.lode.barrierapi.event.PlayerDamageByStormEvent;
@EventHandler
public void onEnterStorm(PlayerEnterStormEvent event) {
Player player = event.getPlayer();
// Player crossed into the storm
}
@EventHandler
public void onLeaveStorm(PlayerLeaveStormEvent event) {
Player player = event.getPlayer();
// Player returned inside the border
}
@EventHandler
public void onStormDamage(PlayerDamageByStormEvent event) {
// Cancel or modify storm damage
event.setCancelled(true);
}
```
---
## Related Pages
- [[Barrier/Developers/API Reference]] — Full interface documentation