# PreGameStateChangeEvent
> Fired before a game state change occurs. Can be cancelled to prevent the transition.
`gg.lode.observerapi.api.event`
---
## Signature
```java
public class PreGameStateChangeEvent extends BaseEvent implements Cancellable
```
---
## Methods
### getOldState
```java
public GameState getOldState()
```
**Returns:** [[GameState]] - the current game state
---
### getNewState
```java
public GameState getNewState()
```
**Returns:** [[GameState]] - the target game state
---
### getTickDelay
```java
public int getTickDelay()
```
**Returns:** `int` - the delay in ticks before the state change occurs
---
### setTickDelay
```java
public void setTickDelay(int tickDelay)
```
| Parameter | Type | Description |
|-----------|------|-------------|
| `tickDelay` | `int` | The delay in ticks before the state change |
---
### getSource
```java
public @Nullable Player getSource()
```
**Returns:** `@Nullable Player` - the player who initiated the state change, or `null`
---
### isCancelled
```java
public boolean isCancelled()
```
**Returns:** `boolean` - `true` if the event is cancelled
---
### setCancelled
```java
public void setCancelled(boolean cancelled)
```
| Parameter | Type | Description |
|-----------|------|-------------|
| `cancelled` | `boolean` | Whether to cancel the event |
---
## Related Pages
- [[GameState]]
- [[GameStateChangeEvent]]
- [[IObserverAPI]]