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);