Skip to content
Void Monster Docs

Type to search guides and API reference.

    OBS Utils/Developer docs

    API

    Legacy 4.0

    OBS Utils comes with an API to allow custom overlays to be registered to it.

    The OBS Utils API can be accessed using:

    game.modules.get("obs-utils").api

    Consider any API properties not mentioned in this Guide “internal.” Not all use-cases are supported for external Components and will cause the module to break.

    You can create an overlay that will be rendered into the stream page exactly once. To do so, create a Svelte component of your desired overlay and then pass the Class Object you get from importing the Svelte Component to the API:

    import YourOverlay from "../YourOverlay.svelte";
    game.modules.get("obs-utils").api.registerUniqueOverlay(YourOverlay);

    The overlay will then be instanced on reload!

    The OBS Utils API provides the following methods and properties:

    • overlayTypes: Map of overlay types registered with the API
    • overlayTypeNames: Map of readable names for overlay types
    • singleInstanceOverlays: Set of Svelte components registered as single instance overlays

    registerOverlayType(key: string, readableName: string, type: OverlayType)

    Section titled “registerOverlayType(key: string, readableName: string, type: OverlayType)”

    Registers a new overlay type with the API.

    Parameters:

    • key (string): The key to identify the overlay type
    • readableName (string): A human-readable name for the overlay type
    • type (OverlayType): The overlay type object

    registerUniqueOverlay(overlay: SvelteComponentConstructor)

    Section titled “registerUniqueOverlay(overlay: SvelteComponentConstructor)”

    Registers a Svelte component as a unique overlay that will be rendered once.

    Parameters:

    • overlay (SvelteComponentConstructor): The Svelte component to register

    Returns the currently selected actors for overlays.

    Returns: Array of actor IDs

    Sets the selected actors for overlays.

    Parameters:

    • actorArray (string[]): Array of actor IDs

    Sets actor values data.

    Parameters:

    • actorValueArray (ActorValues): Actor values data

    Returns the OBS WebSocket client if the WebSocket API is allowed.

    Returns: OBS WebSocket client or undefined

    Checks if the current context is OBS.

    Returns: boolean

    The main API class that provides methods for registering overlay types and components.

    export class ObsUtilsApi {
    // Properties
    overlayTypes: Map<string, OverlayType>;
    overlayTypeNames: Map<string, string>;
    singleInstanceOverlays: Set<SvelteComponentConstructor>;
    // Methods
    registerOverlayType(key: string, readableName: string, type: OverlayType);
    registerUniqueOverlay(overlay: SvelteComponentConstructor);
    getSelectedActors();
    setSelectedActors(actorArray: string[]);
    setAVData(actorValueArray: ActorValues);
    getOBSWebsocketClient();
    isOBS();
    }

    A class for defining custom overlay types.

    export class OverlayType {
    // Properties
    overlayEditor: SvelteComponentConstructor;
    overlayComponents: Map<string, SvelteComponentConstructor>;
    overlayClass: SvelteComponentConstructor;
    overlayComponentNames: Map<string, string>;
    overlayComponentEditors: Map<string, SvelteComponentConstructor>;
    compactEditorButtons: Map<string, boolean>;
    // Methods
    registerOverlayEditor(editor: SvelteComponentConstructor);
    registerComponent(key: string, readableName: string, type: SvelteComponentConstructor);
    registerComponentEditor(key: string, editor: SvelteComponentConstructor, compactButtons: boolean);
    }