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