Skip to content

Events

The event bus is a typed pub/sub system. All events are immutable Java records.

Subscribing

Register a listener through your AddonContext:

java
ctx.registerEvent(DialogStartEvent.class, event -> {
    System.out.println("Dialog started: " + event.text());
});

To unsubscribe later, keep a reference to the listener:

java
EventListener<DialogStartEvent> listener = event -> { ... };
ctx.registerEvent(DialogStartEvent.class, listener);

// later
ctx.unregister(DialogStartEvent.class, listener);

Available events

Session lifecycle

EventFired when
PlayerSessionStartEventA player session starts
PlayerSessionEndEventA player session ends
StoryStartEventA story begins
StoryEndEventA story ends
SceneEndEventA scene ends
ChapterSceneStartEventA scene starts inside a chapter
ChapterSceneChangeEventScene changes within a chapter

Characters

EventFired when
CharacterSpawnEventA character spawns
CharacterDespawnEventA character despawns

Cutscenes

EventFired when
CutsceneStartEventA cutscene starts
CutsceneEndEventA cutscene ends

Dialogs

EventFired when
DialogStartEventA dialog line starts
DialogEndEventA dialog line ends
DialogChoiceEventA choice is made

Interactions

EventFired when
InteractionTriggerEventAn interaction triggers
InteractionZoneEnterEventPlayer enters a zone
InteractionZoneLeaveEventPlayer leaves a zone

Ink actions

EventFired when
InkActionStopEventAn Ink action stops
InkTagProcessedEventAn Ink tag is processed

Recording

EventFired when
RecordingStartEventRecording starts
RecordingStopEventRecording stops
RecordingSaveEventRecording is saved

Playback

EventFired when
PlaybackStartEventPlayback starts
PlaybackEndEventPlayback ends
PlaybackPauseEventPlayback pauses
PlaybackResumeEventPlayback resumes