> For the complete documentation index, see [llms.txt](https://arcadia-9.gitbook.io/towns-and-nations/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://arcadia-9.gitbook.io/towns-and-nations/developpers/api.md).

# API

{% hint style="warning" %}
Towns and Nations API is new and errors may happen. To report a bug or suggest an update, please reach us on [Discord](https://discord.com/invite/DDg7JkR2hc).
{% endhint %}

## Installing the API

The API **tan-api** is hosted on [maven central portal](https://central.sonatype.com/artifact/io.github.leralix/tan-api). It can be compiled from Maven and Gradle :&#x20;

{% tabs %}
{% tab title="Gradle" %}

```gradle
repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'io.github.leralix:tan-api:0.3.0'
}
```

{% endtab %}

{% tab title="Gradle (Kotlin)" %}

```kotlin
repositories {
    mavenCentral()
}

dependencies {
    compileOnly("io.github.leralix:tan-api:0.3.0")
}
```

{% endtab %}

{% tab title="Maven" %}

```xml
<dependencies>
    <dependency>
        <groupId>io.github.leralix</groupId>
        <artifactId>tan-api</artifactId>
        <version>0.3.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
</repositories>
```

{% endtab %}
{% endtabs %}

<details>

<summary>API example</summary>

```java
import org.tan.api.TanAPI;
import org.tan.api.getters.TanPlayerManager;
import org.tan.api.interfaces.TanPlayer;
import org.tan.api.interfaces.TanTown;

public void getPlayerTowns() {
    TanAPI api = TanAPI.getInstance(); //Entry point of the api
    TanPlayerManager playerManager = api.getPlayerManager();
    Collection<TanPlayer> players = playerManager.getAll();
        for (TanPlayer player : players) {
            Optional<TanTown> playerTown = player.getTown();
            if(playerTown.isEmpty()){
                getLogger().info("Player: " + player.getNameStored() + " is not in a town");
            }
            else {
                getLogger().info("Player: " + player.getNameStored() + " is in town : " + playerTown.get().getName());
            }
        }
    }
}
```

</details>

Javadoc can be found [here](https://javadoc.io/doc/io.github.leralix/tan-api/0.3.0/index.html).

## Main manager classes :&#x20;

### PlayerManager

Handles all player-related actions, such as:

* Retrieving player data.
* Managing town membership.

### TerritoryManager

Manages town and region data:

* Fetching town details.
* Checking region ownership.

### ClaimManager

Handles land claims and permissions:

* Checking chunk and block ownership.
* Claiming chunk for territories

### LandmarkManager

Manages property data:

* Retrieving landmarks and structures.
* Modifying rewards
