Skip to main content

[NodeMod Core]

/ .. / default

Class: default

Defined in: src/enhanced/events.ts:108

Enhanced event system providing advanced event handling capabilities on top of nodemod's native events. Features include priority-based execution, one-time listeners, event filtering, throttling, and debouncing.

Example

// Basic event listening
nodemodCore.events.on('dllClientConnect', (entity, name) => {
console.log(`${name} connected`);
});

// One-time event listener
nodemodCore.events.once('dllSpawn', (entity) => {
console.log('First spawn event received');
});

// Priority-based event handling
nodemodCore.events.on('dllClientCommand', handleCommand, { priority\: 10 });
nodemodCore.events.on('dllClientCommand', logCommand, { priority\: 1 });

// Event filtering
nodemodCore.events.filter('dllClientConnect',
(entity, name) => name.startsWith('Admin'),
(entity, name) => console.log(`Admin ${name} connected`)
);

// Throttled events (max once per second)
nodemodCore.events.throttle('dllStartFrame', frameHandler, 1000);

Constructors

Constructor

new default(): NodemodEvents

Defined in: src/enhanced/events.ts:115

Creates a new NodemodEvents instance and initializes enhanced event handlers.

Returns

NodemodEvents

Properties

eventListeners

private eventListeners: Map<keyof EventCallbacks, EventListener<keyof EventCallbacks>[]>

Defined in: src/enhanced/events.ts:110

Map of active event listeners organized by event name

Methods

on()

on<T>(eventName, handler, options): this

Defined in: src/enhanced/events.ts:145

Adds an event listener with enhanced options like priority and one-time execution.

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Name of the event to listen for

handler

EventCallbacks[T]

Function to execute when event occurs

options

EventOptions = {}

Additional options for the listener

Returns

this

This instance for method chaining

Example

// Basic event listener
nodemodCore.events.on('dllClientConnect', (entity, name) => {
console.log(`${name} joined the server`);
});

// High-priority listener (executes first)
nodemodCore.events.on('dllClientCommand', (entity, command) => {
console.log('Processing command\:', command);
}, { priority\: 100 });

// One-time listener
nodemodCore.events.on('dllSpawn', (entity) => {
console.log('First entity spawned');
}, { once\: true });

off()

off<T>(eventName, handler): this

Defined in: src/enhanced/events.ts:170

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

handler

EventCallbacks[T]

Returns

this

once()

once<T>(eventName, handler): this

Defined in: src/enhanced/events.ts:208

Adds a one-time event listener that automatically removes itself after first execution.

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Name of the event to listen for

handler

EventCallbacks[T]

Function to execute when event occurs

Returns

this

This instance for method chaining

Example

// Listen for first player connection only
nodemodCore.events.once('dllClientConnect', (entity, name) => {
console.log(`First player ${name} connected - starting game logic`);
});

// Wait for map change
nodemodCore.events.once('dllSpawn', () => {
console.log('Map fully loaded');
});

clearListeners()

clearListeners(eventName?): this

Defined in: src/enhanced/events.ts:213

Parameters

eventName?

keyof EventCallbacks

Returns

this

getListeners()

getListeners<T>(eventName): EventListener<T>[]

Defined in: src/enhanced/events.ts:228

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Returns

EventListener<T>[]

initializeEvents()

private initializeEvents(): void

Defined in: src/enhanced/events.ts:233

Returns

void

waitFor()

waitFor<T>(eventName, timeout): Promise<Parameters<EventCallbacks[T]>>

Defined in: src/enhanced/events.ts:320

Waits for a specific event to occur and returns its parameters as a promise. Useful for async/await patterns with events.

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Name of the event to wait for

timeout

number = 10000

Timeout in milliseconds (default: 10000)

Returns

Promise<Parameters<EventCallbacks[T]>>

Promise that resolves with event parameters or rejects on timeout

Example

// Wait for player connection
try {
const [entity, name] = await nodemodCore.events.waitFor('dllClientConnect', 30000);
console.log(`Player ${name} connected within 30 seconds`);
} catch (error) {
console.log('No player connected within timeout');
}

// Wait for entity spawn with shorter timeout
const [spawnedEntity] = await nodemodCore.events.waitFor('dllSpawn', 5000);

filter()

filter<T>(eventName, predicate, handler): this

Defined in: src/enhanced/events.ts:359

Adds an event listener that only executes when a predicate condition is met.

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Name of the event to listen for

predicate

EventPredicate<T>

Function that returns true if the handler should execute

handler

EventCallbacks[T]

Function to execute when event occurs and predicate is true

Returns

this

This instance for method chaining

Example

// Only handle commands from admins
nodemodCore.events.filter('dllClientCommand',
(entity, command) => isAdmin(entity),
(entity, command) => handleAdminCommand(entity, command)
);

// Only handle player connections with specific names
nodemodCore.events.filter('dllClientConnect',
(entity, name) => name.startsWith('VIP_'),
(entity, name) => grantVipAccess(entity)
);

map()

map<T>(eventName, transformer, newEventName?): this

Defined in: src/enhanced/events.ts:370

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

transformer

EventTransformer<T>

newEventName?

keyof EventCallbacks

Returns

this

throttle()

throttle<T>(eventName, handler, delay): this

Defined in: src/enhanced/events.ts:401

Adds a throttled event listener that limits execution to once per specified interval. Useful for performance optimization with high-frequency events.

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Name of the event to listen for

handler

EventCallbacks[T]

Function to execute when event occurs

delay

number = 1000

Minimum interval between executions in milliseconds (default: 1000)

Returns

this

This instance for method chaining

Example

// Throttle frame events to once per second
nodemodCore.events.throttle('dllStartFrame', () => {
console.log('Frame update (max once per second)');
}, 1000);

// Throttle player movement tracking
nodemodCore.events.throttle('dllClientCommand', (entity, command) => {
if (command.startsWith('+move')) {
updatePlayerPosition(entity);
}
}, 500); // Max twice per second

debounce()

debounce<T>(eventName, handler, delay): this

Defined in: src/enhanced/events.ts:439

Adds a debounced event listener that delays execution until after the specified interval has passed since the last event occurrence. Useful for handling rapid successive events.

Type Parameters

T

T extends keyof EventCallbacks

Parameters

eventName

T

Name of the event to listen for

handler

EventCallbacks[T]

Function to execute when event occurs

delay

number = 1000

Delay in milliseconds after last event before execution (default: 1000)

Returns

this

This instance for method chaining

Example

// Debounce player input to handle final command only
nodemodCore.events.debounce('dllClientCommand', (entity, command) => {
if (command.startsWith('buy_')) {
processPurchase(entity, command);
}
}, 300); // Wait 300ms after last buy command

// Debounce entity spawning for batch processing
nodemodCore.events.debounce('dllSpawn', () => {
console.log('Finished spawning entities');
optimizeMapEntities();
}, 2000);