# API Reference
Sign-API provides the public interfaces for reading and controlling nametags at runtime. The API is accessed through the static `SignAPI` class.
---
## SignAPI
The static entry point for all API access.
```java
import gg.lode.sign.api.SignAPI;
INametagManager manager = SignAPI.getNametagManager();
```
| Method | Description |
|---|---|
| `get()` | Returns the `ISign` instance. Throws `IllegalStateException` if Sign hasn't initialized. |
| `getNametagManager()` | Shorthand for `get().getNametagManager()`. |
---
## INametagManager
Manages all active nametags. Retrieved via `SignAPI.getNametagManager()`.
```java
INametagManager manager = SignAPI.getNametagManager();
INametag nametag = manager.get(player);
```
| Method | Description |
|---|---|
| `get(Player)` | Returns a player's nametag, or `null` if none exists. |
| `getAll()` | Returns all active nametags. |
| `create(Player)` | Creates a nametag for a player. |
| `remove(Player)` | Removes and despawns a player's nametag. |
| `createAll()` | Creates nametags for all online players. |
| `removeAll()` | Removes all nametags. |
---
## INametag
Represents a single player's nametag. Provides visibility control and line overrides.
### Visibility
| Method | Description |
|---|---|
| `getPlayer()` | The player this nametag belongs to. |
| `showForAll()` | Shows the nametag to all online players. |
| `hideForAll()` | Hides the nametag from all online players. |
| `updateVisibilityForAll()` | Recalculates visibility for all viewers. |
| `show(Player)` | Shows the nametag to a specific viewer. |
| `hide(Player)` | Hides the nametag from a specific viewer. |
| `update(Player)` | Sends updated metadata to a viewer. |
### Overrides
Overrides replace the configured nametag lines with custom content until released or the plugin is reloaded.
| Method | Description |
|---|---|
| `setLines(List<String>)` | Override lines for all viewers. |
| `setLines(Player, List<String>)` | Override lines for a specific viewer. |
| `release()` | Clear the global override. |
| `release(Player)` | Clear a per-viewer override. |
| `hasOverride()` | `true` if a global override is active. |
| `hasOverride(Player)` | `true` if the viewer has any override (per-viewer or global). |
---
## SignReloadEvent
Fired after a successful `/sign reload`. All nametags have been recreated at this point, so any overrides set before the reload are gone.
```java
@EventHandler
public void onSignReload(SignReloadEvent event) {
// Re-apply overrides here
}
```
---
## BaseEvent
Abstract base class for all Sign events. Extends Bukkit's `Event` with a `call()` convenience method that fires the event via `Bukkit.getPluginManager().callEvent(this)`.
---
## Related Pages
- [[Sign/Developers/Overview]] — getting started with the API
- [[Sign/Server Owners/Commands]] — `/sign reload` triggers `SignReloadEvent`