mirror of
https://github.com/SikongJueluo/kubejs-utils.git
synced 2026-01-11 08:47:50 +08:00
refector(EventBus): splite EventBus type definition and its implemention
This commit is contained in:
65
types/EventBus.d.ts
vendored
Normal file
65
types/EventBus.d.ts
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* Event data for C4 use started events.
|
||||
*/
|
||||
interface C4UseStartedEvent {
|
||||
player: Internal.Player;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event data for C4 activation events.
|
||||
*/
|
||||
interface C4ActivatedEvent {
|
||||
level: Internal.Level;
|
||||
blockPos: { x: number; y: number; z: number };
|
||||
player: Internal.Player;
|
||||
explosionTime: number;
|
||||
explosionPower: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mapping of event names to their corresponding event types.
|
||||
*/
|
||||
interface EventMap {
|
||||
PlayerItemFishedEvent: Internal.ItemFishedEvent;
|
||||
LivingEntityUseItemEvent$Finish: Internal.LivingEntityUseItemEvent$Finish;
|
||||
C4Activated: C4ActivatedEvent;
|
||||
C4UseStarted: C4UseStartedEvent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Union type of all valid event names.
|
||||
*/
|
||||
type EventName = keyof EventMap;
|
||||
|
||||
/**
|
||||
* Callback function type for a specific event.
|
||||
*/
|
||||
type EventCallback<T extends EventName> = (event: EventMap[T]) => any;
|
||||
|
||||
/**
|
||||
* A simple event bus for handling custom events in KubeJS environment.
|
||||
*/
|
||||
interface EventBus {
|
||||
/**
|
||||
* Map storing event names and their corresponding callback functions.
|
||||
*/
|
||||
eventMap: { [key: string]: Function };
|
||||
|
||||
/**
|
||||
* Registers a callback function for a specific event.
|
||||
* @param eventName - The name of the event to listen for.
|
||||
* @param callback - The callback function to execute when the event is emitted.
|
||||
*/
|
||||
register<T extends EventName>(
|
||||
eventName: T,
|
||||
callback: EventCallback<T>,
|
||||
): void;
|
||||
|
||||
/**
|
||||
* Emits an event, calling the registered callback function if it exists.
|
||||
* @param eventName - The name of the event to emit.
|
||||
* @param event - The event data to pass to the callback function.
|
||||
* @returns The return value of the callback function, or undefined if no callback is registered.
|
||||
*/
|
||||
emit<T extends EventName>(eventName: T, event: EventMap[T]): any;
|
||||
}
|
||||
Reference in New Issue
Block a user