Skip to content

GameStateChangeEvent

GameStateChangeEvent fires immediately before every game lifecycle transition. The game still reports the old state during listener execution.

  • Package: dev.despical.snake.api.event.game
  • Parent Class: SnakeEvent
  • Cancellable: Yes
MethodReturn TypeDescription
getGame()GameGame requesting the transition.
getArena()ArenaArena changing state.
getOldState()GameStateState assigned before the transition.
getNewState()GameStateRequested destination state.
getUser()UserCurrent assigned user, which may be null during empty states.
isCancelled()booleanWhether the transition is prevented.
setCancelled(boolean)voidRetains the old state when set to true.

Possible states are INACTIVE, WAITING, IN_GAME, ENDING, and RESTARTING.

Cancelling an internal recovery transition such as RESTARTING can leave the game occupied. Only cancel a transition if your integration also manages the resulting lifecycle.

@EventHandler
public void onSnakeState(GameStateChangeEvent event) {
if (event.getNewState() == GameState.IN_GAME && maintenanceMode) {
event.setCancelled(true);
return;
}
getLogger().info(event.getArena().getId() + ": "
+ event.getOldState() + " -> " + event.getNewState());
}