# IObserverAPI
> Main API interface providing access to all Observer managers and game state control.
`gg.lode.observerapi`
---
## Signature
```java
public interface IObserverAPI
```
---
## Methods
### getGameState
```java
GameState getGameState()
```
Returns the current [[GameState]].
**Returns:** `GameState` - the current game state
---
### setGameState
```java
void setGameState(GameState state)
```
Sets the game state. Throws various exceptions depending on the current and target state.
| Parameter | Type | Description |
|-----------|------|-------------|
| `state` | `GameState` | The target game state |
**Throws:**
| Exception | Condition |
|-----------|-----------|
| [[AlreadyInGameModeException]] | Already in game mode |
| [[AlreadyInLobbyModeException]] | Already in lobby mode |
| [[AlreadyInPreGameModeException]] | Already in pre-game mode |
| [[InsufficientPlayersException]] | Not enough players to start |
| [[InsufficientTeamsException]] | Not enough teams to start |
| [[NotInLobbyModeException]] | Not in lobby mode when required |
| [[NotInPreGameModeException]] | Not in pre-game mode when required |
| [[PlayerOverflowException]] | Too many players |
| [[TeamOverflowException]] | Too many teams |
| [[LeadNotInstalledException]] | Lead plugin is not installed |
---
### setGameState (with source)
```java
void setGameState(GameState state, @Nullable Player source)
```
Sets the game state with an optional source player.
| Parameter | Type | Description |
|-----------|------|-------------|
| `state` | `GameState` | The target game state |
| `source` | `@Nullable Player` | The player who initiated the state change |
**Throws:** Same exceptions as `setGameState(GameState)`.
---
### getCapsuleManager
```java
ICapsuleManager getCapsuleManager()
```
**Returns:** [[ICapsuleManager]]
---
### getMechanicsManager
```java
IMechanicsManager getMechanicsManager()
```
**Returns:** [[IMechanicsManager]]
---
### getEliminationManager
```java
IEliminationManager getEliminationManager()
```
**Returns:** [[IEliminationManager]]
---
### getKitManager
```java
IKitManager getKitManager()
```
**Returns:** [[IKitManager]]
---
### getRespawnManager
```java
IRespawnManager getRespawnManager()
```
**Returns:** [[IRespawnManager]]
---
### getPlayerManager
```java
IPlayerManager getPlayerManager()
```
**Returns:** [[Observer/API/Managers/IPlayerManager]]
---
### getDecayManager
```java
IDecayManager getDecayManager()
```
**Returns:** [[IDecayManager]]
---
### getCustomRecipesManager
```java
ICustomRecipesManager getCustomRecipesManager()
```
**Returns:** [[ICustomRecipesManager]]
---
### getWorldEventManager
```java
IWorldEventManager getWorldEventManager()
```
**Returns:** [[IWorldEventManager]]
---
### getLateScatterManager
```java
ILateScatterManager getLateScatterManager()
```
**Returns:** [[ILateScatterManager]]
---
### getHelpOpManager
```java
IHelpOpManager getHelpOpManager()
```
**Returns:** [[IHelpOpManager]]
---
### getLifestealManager
```java
ILifestealManager getLifestealManager()
```
**Returns:** [[ILifestealManager]]
---
### getPedestalManager
```java
IPedestalManager getPedestalManager()
```
**Returns:** [[IPedestalManager]]
---
### getTranslationManager
```java
ITranslationManager getTranslationManager()
```
**Returns:** [[ITranslationManager]]
---
## Related Pages
- [[ObserverAPI]]
- [[GameState]]
- [[ICapsuleManager]]
- [[IMechanicsManager]]
- [[IEliminationManager]]
- [[IKitManager]]
- [[IRespawnManager]]
- [[Observer/API/Managers/IPlayerManager]]
- [[IDecayManager]]
- [[ICustomRecipesManager]]
- [[IWorldEventManager]]
- [[ILateScatterManager]]
- [[IHelpOpManager]]
- [[ILifestealManager]]
- [[IPedestalManager]]
- [[ITranslationManager]]