[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
<keyofEventCallbacks
,EventListener
<keyofEventCallbacks
>[]>
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
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
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
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
Function that returns true if the handler should execute
handler
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
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
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
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);