Nexus Addon API Reference

Updated 21 October, 2026

Nexus Addon API Reference

This is a complete reference of the Nexus addon API, revision 6, as defined in Nexus.h from RCGG-lib-nexus-api. Every function is a member of the AddonAPI_t table your addon receives in its load function. The guides linked in each section explain the concepts and show complete examples.

Identifiers passed as const char* are copied by Nexus, so they do not need to outlive the call, unless stated otherwise. Strings are null-terminated UTF-8.

Contents

Addon definition

extern "C" __declspec(dllexport) AddonDefinition_t* GetAddonDef();
Field Type Description
Signature uint32_t Unique addon ID. Must not be 0.
APIVersion uint32_t NEXUS_API_VERSION, or 0 to receive no API.
Name const char* Display name.
Version AddonVersion_t Major, minor, build and revision.
Author const char* Author name.
Description const char* Short description.
Load void (*)(AddonAPI_t*) Called when the addon is loaded.
Unload void (*)() Called before the addon is unloaded. Optional only with AF_DisableHotloading.
Flags EAddonFlags Behavior flags.
Provider EUpdateProvider Update source. Optional.
UpdateLink const char* Update location for the provider. Optional.

See The Addon Definition and API Versioning.

Renderer

Member Description
void* SwapChain The game's IDXGISwapChain*.
void* ImguiContext The shared ImGuiContext*. Pass to ImGui::SetCurrentContext.
void* ImguiMalloc, void* ImguiFree ImGui allocator functions. Pass to ImGui::SetAllocatorFunctions.
void GUI_Register(ERenderType aRenderType, GUI_RENDER aRenderCallback) Registers a render callback of the given type.
void GUI_Deregister(GUI_RENDER aRenderCallback) Removes a render callback, for all types it was registered with.

GUI_RENDER is void (*)(). See Rendering and Dear ImGui Integration.

User interface

Member Description
void GUI_SendAlert(const char* aMessage) Shows a short notification on screen.
void GUI_RegisterCloseOnEscape(const char* aWindowName, bool* aIsVisible) Sets *aIsVisible to false when Escape is pressed while the window with that ImGui name is open. The pointer must stay valid until deregistered.
void GUI_DeregisterCloseOnEscape(const char* aWindowName) Stops closing the window on Escape.

Updater

Member Description
void RequestUpdate(uint32_t aSignature, const char* aUpdateURL) Downloads the DLL at aUpdateURL and installs it as an update for the addon with that signature, without a version check. Only works for addons with the provider UP_Self.

See Update provider.

Logging

Member Description
void Log(ELogLevel aLogLevel, const char* aChannel, const char* aStr) Writes a message to the Nexus log under the given channel. The message is not a format string.

See Logging.

Paths

The returned strings are owned by Nexus and stay valid until the game closes.

Member Returns
const char* Paths_GetGameDirectory() The game folder.
const char* Paths_GetAddonDirectory(const char* aName) \addons, or \addons\ if a name is passed. The folder is not created.
const char* Paths_GetCommonDirectory() \addons\common, a folder shared by all addons, for example for cached API data.

MinHook

Nexus initializes MinHook once for all addons and exposes it, so addons do not ship and initialize their own copy. The functions behave like the MinHook functions of the same name and return an EMHStatus.

Member MinHook equivalent
EMHStatus MinHook_Create(LPVOID pTarget, LPVOID pDetour, LPVOID* ppOriginal) MH_CreateHook
EMHStatus MinHook_Remove(LPVOID pTarget) MH_RemoveHook
EMHStatus MinHook_Enable(LPVOID pTarget) MH_EnableHook
EMHStatus MinHook_Disable(LPVOID pTarget) MH_DisableHook

Disable and remove every hook in your unload function. Hooking game functions makes your addon volatile, so set AF_IsVolatile, and it counts as accessing game memory under the Addon Policy.

Events

Member Description
void Events_Subscribe(const char* aIdentifier, EVENT_CONSUME aConsumeEventCallback) Subscribes a handler to an event.
void Events_Unsubscribe(const char* aIdentifier, EVENT_CONSUME aConsumeEventCallback) Removes a handler from an event.
void Events_Raise(const char* aIdentifier, void* aEventData) Calls all handlers of the event with the payload, synchronously.
void Events_RaiseNotification(const char* aIdentifier) Same as Events_Raise with a nullptr payload.
void Events_RaiseTargeted(uint32_t aSignature, const char* aIdentifier, void* aEventData) Raises the event only for the addon with the given signature.
void Events_RaiseNotificationTargeted(uint32_t aSignature, const char* aIdentifier) Targeted event without payload.

EVENT_CONSUME is void (*)(void* aEventArgs). See Event Handling and Communication Between Addons.

Window procedure

Member Description
void WndProc_Register(WNDPROC_CALLBACK aWndProcCallback) Receives every window message before the game. Return 0 to consume it, or the message to pass it on.
void WndProc_Deregister(WNDPROC_CALLBACK aWndProcCallback) Removes the callback.
LRESULT WndProc_SendToGameOnly(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) Sends a message to the game, bypassing Nexus and all addons.

WNDPROC_CALLBACK is UINT (*)(HWND, UINT, WPARAM, LPARAM). See Processing window messages.

Keybinds

Member Description
void InputBinds_RegisterWithString(const char* aIdentifier, INPUTBINDS_PROCESS aKeybindHandler, const char* aKeybind) Registers a keybind. aKeybind is the default, for example "ALT+SHIFT+T", or "(null)" for none.
void InputBinds_RegisterWithStruct(const char* aIdentifier, INPUTBINDS_PROCESS aKeybindHandler, Keybind_t aKeybind) Same, with the default as a struct. Key is a scan code.
void InputBinds_Deregister(const char* aIdentifier) Removes the handler. The user's key combination is kept.
void InputBinds_Invoke(const char* aIdentifier, bool aIsRelease) Calls the handler of a keybind as if it had been pressed or released.

INPUTBINDS_PROCESS is void (*)(const char* aIdentifier, bool aIsRelease). Handlers run on their own thread. See Registering and Managing Keybindings.

Game keybinds

Member Description
void GameBinds_PressAsync(EGameBinds aGameBind) Presses the keys bound to the game action, without blocking.
void GameBinds_ReleaseAsync(EGameBinds aGameBind) Releases them, without blocking.
void GameBinds_InvokeAsync(EGameBinds aGameBind, int32_t aDuration) Presses the keys and releases them after aDuration milliseconds, without blocking.
void GameBinds_Press(EGameBinds aGameBind) Presses the keys.
void GameBinds_Release(EGameBinds aGameBind) Releases the keys.
bool GameBinds_IsBound(EGameBinds aGameBind) Whether the user has keys set for the action.

See Pressing game keys.

Member Description
void* DataLink_Get(const char* aIdentifier) Returns the resource, or nullptr if it does not exist.
void* DataLink_Share(const char* aIdentifier, uint64_t aResourceSize) Allocates a zeroed resource and returns it. Returns the existing resource if one with the same size exists, or nullptr if one with a different size exists.

Resources live until the game closes. See Sharing Resources Between Addons.

Textures

Member Description
Texture_t* Textures_Get(const char* aIdentifier) Returns the texture, or nullptr.
Texture_t* Textures_GetOrCreateFromFile(const char* aIdentifier, const char* aFilename) Returns the texture if it exists. Otherwise starts loading it and returns nullptr.
Texture_t* Textures_GetOrCreateFromResource(const char* aIdentifier, uint32_t aResourceID, HMODULE aModule)
Texture_t* Textures_GetOrCreateFromURL(const char* aIdentifier, const char* aRemote, const char* aEndpoint)
Texture_t* Textures_GetOrCreateFromMemory(const char* aIdentifier, void* aData, uint64_t aSize)
void Textures_LoadFromFile(const char* aIdentifier, const char* aFilename, TEXTURES_RECEIVECALLBACK aCallback) Loads the texture, also if the identifier exists, and calls aCallback when it is ready, or with nullptr on failure. aCallback may be nullptr.
void Textures_LoadFromResource(const char* aIdentifier, uint32_t aResourceID, HMODULE aModule, TEXTURES_RECEIVECALLBACK aCallback)
void Textures_LoadFromURL(const char* aIdentifier, const char* aRemote, const char* aEndpoint, TEXTURES_RECEIVECALLBACK aCallback)
void Textures_LoadFromMemory(const char* aIdentifier, void* aData, uint64_t aSize, TEXTURES_RECEIVECALLBACK aCallback)

TEXTURES_RECEIVECALLBACK is void (*)(const char* aIdentifier, Texture_t* aTexture). Resources must have the type PNG. See Working with Textures in Nexus.

Quick Access

Member Description
void QuickAccess_Add(const char* aIdentifier, const char* aTextureIdentifier, const char* aTextureHoverIdentifier, const char* aKeybindIdentifier, const char* aTooltipText) Adds a shortcut icon that invokes the keybind when clicked.
void QuickAccess_Remove(const char* aIdentifier) Removes the shortcut.
void QuickAccess_Notify(const char* aIdentifier) Shows a notification badge on the shortcut.
void QuickAccess_AddContextMenu(const char* aIdentifier, const char* aTargetShortcutIdentifier, GUI_RENDER aShortcutRenderCallback) Adds a section to the right-click menu of the target shortcut, or of the Nexus icon if the target is nullptr. The callback draws ImGui widgets.
void QuickAccess_RemoveContextMenu(const char* aIdentifier) Removes the context menu section.

See Quick Access shortcuts.

Localization

Member Description
const char* Localization_Translate(const char* aIdentifier) Returns the text in the active language, falling back to English, then to the identifier. Do not keep the pointer.
const char* Localization_TranslateTo(const char* aIdentifier, const char* aLanguageIdentifier) Same, for a specific language such as "de".
void Localization_Set(const char* aIdentifier, const char* aLanguageIdentifier, const char* aString) Adds or replaces a text. Takes effect from the next frame.

See Localizing Nexus Addons.

Fonts

Member Description
void Fonts_Get(const char* aIdentifier, FONTS_RECEIVECALLBACK aCallback) Subscribes to an existing font and calls the receiver immediately. If the font does not exist, the receiver is called with nullptr and not subscribed.
void Fonts_Release(const char* aIdentifier, FONTS_RECEIVECALLBACK aCallback) Unsubscribes. The font is removed once it has no subscribers left.
void Fonts_AddFromFile(const char* aIdentifier, float aFontSize, const char* aFilename, FONTS_RECEIVECALLBACK aCallback, void* aConfig) Adds a font and subscribes the receiver. If the identifier exists, only subscribes. aConfig is an optional ImFontConfig*.
void Fonts_AddFromResource(const char* aIdentifier, float aFontSize, uint32_t aResourceID, HMODULE aModule, FONTS_RECEIVECALLBACK aCallback, void* aConfig)
void Fonts_AddFromMemory(const char* aIdentifier, float aFontSize, void* aData, uint64_t aSize, FONTS_RECEIVECALLBACK aCallback, void* aConfig)
void Fonts_Resize(const char* aIdentifier, float aFontSize) Changes the size of a font and notifies its subscribers.

FONTS_RECEIVECALLBACK is void (*)(const char* aIdentifier, void* aFont), where aFont is an ImFont*. Resources must have the type FONT. See Working with Fonts in Nexus.

Constants

Constant Description
NEXUS_API_VERSION The API revision the header describes, currently 6.
DL_NEXUS_LINK Shared resource of type NexusLinkData_t.
DL_MUMBLE_LINK Shared resource of type Mumble::Data.
DL_MUMBLE_LINK_IDENTITY Shared resource of type Mumble::Identity.
EV_WINDOW_RESIZED Event without payload, raised when the game resizes its buffers.
EV_MUMBLE_IDENTITY_UPDATED Event with a Mumble::Identity* payload.
EV_ADDON_LOADED, EV_ADDON_UNLOADED Events with a uint32_t* signature payload.

More events, including the ArcDPS events, are listed in Event Handling.

Types and enumerations

NexusLinkData_t

typedef struct NexusLinkData_t
{
	uint32_t Width;          /* Game window width in pixels. */
	uint32_t Height;         /* Game window height in pixels. */
	float    Scaling;        /* Game interface scaling factor. */

	bool     IsMoving;       /* The character is moving. */
	bool     IsCameraMoving; /* The camera is moving. */
	bool     IsGameplay;     /* Not in a loading screen or character select. */

	void*    Font;           /* ImFont*, game font. */
	void*    FontBig;        /* ImFont*, large game font. */
	void*    FontUI;         /* ImFont*, game interface font. */
} NexusLinkData_t;

AddonVersion_t, Keybind_t, Texture_t

typedef struct AddonVersion_t
{
	uint16_t Major;
	uint16_t Minor;
	uint16_t Build;
	uint16_t Revision;
} AddonVersion_t;

typedef struct Keybind_t
{
	uint16_t Key;   /* Scan code, with 0xE0 prefix for extended keys. */
	bool     Alt;
	bool     Ctrl;
	bool     Shift;
} Keybind_t;

typedef struct Texture_t
{
	uint32_t Width;
	uint32_t Height;
	void*    Resource; /* ID3D11ShaderResourceView* */
} Texture_t;

Enumerations

Enumeration Values
ERenderType RT_PreRender, RT_Render, RT_PostRender, RT_OptionsRender
ELogLevel LOGL_CRITICAL (1), LOGL_WARNING (2), LOGL_INFO (3), LOGL_DEBUG (4), LOGL_TRACE (5)
EAddonFlags AF_None, AF_IsVolatile, AF_DisableHotloading, AF_LaunchOnly
EUpdateProvider UP_None, UP_Raidcore, UP_GitHub, UP_Direct, UP_Self
EMHStatus MinHook status codes, MH_OK (0) on success.
EGameBinds Every bindable game action, grouped into movement, skills, targeting, interface, camera, screenshots, map, mounts, spectator, squad markers, mastery skills, miscellaneous, novelties, build templates and equipment templates. See Nexus.h for the full list.