@OnLibraryEvent
Overview
@OnLibraryEvent() registers a method as a listener for a server-side library domain event.
This decorator listens to events emitted by library wrappers through library.emit(...).
It does not bind immediately. The decorator stores metadata, and OpenCore binds the handler during bootstrap.
Signature
@OnLibraryEvent(libraryName, eventName)
Arguments
libraryName: string— Library identifier (for example:characters,inventory,factions).eventName: string— Domain event name inside that library (for example:session:created).
Handler Parameters
Handlers receive:
payload— The payload passed bylibrary.emit(eventName, payload).meta— Event metadata:libraryNameeventNameeventId(<libraryName>:<eventName>)namespaceside('server')
Example
@Controller()
export class CharacterSessionProjection {
@OnLibraryEvent('characters', 'session:created')
onSessionCreated(
payload: { sessionId: string; playerId: number },
meta: LibraryEventMetadata,
) {
// payload from library.emit(...)
// meta.eventId === 'characters:session:created'
}
}
Important Scope Rule
@OnLibraryEvent() listens only to events emitted with library.emit(...).
It does not listen to:
emitExternal(...)emitNetExternal(...)emitServer(...)
Notes
- Server-only decorator.
- Designed for optional, decoupled observation of domain events.
- Useful for projections, audit logs, side effects, and cross-module reactions.