UNPKG

yoni-mcscripts-lib

Version:

为 Minecraft Script API 中的部分接口创建了 wrapper,并提供简单的事件管理器和任务管理器,另附有一些便于代码编写的一些小工具。

69 lines (68 loc) 2.71 kB
import EventListeningAdapter from "./interfaces/EventListeningAdapter"; import IEventHandler from "./interfaces/EventHandler"; import { EventPriority } from "./EventPriority.js"; import { EventOptionType } from "./GetEventOptions"; export declare class EventRegistry<TEvent extends Function> { #private; throwIfNotRegistered(): void; /** * 该事件的便于区分的名字。 */ get eventName(): string; /** * 关联到的事件类。 */ readonly eventClass: TEvent; /** * 指定不扩展此事件的范围。 */ get noExtends(): boolean; set noExtends(v: boolean); /** * 指定此事件使用额外参数在handler前过滤事件。 */ get extraOption(): boolean; set extraOption(v: boolean); /** * 此事件在handler前过滤事件所使用的处理器。 */ get extraOptionResolver(): ExtraOptionResolver<TEvent> | undefined; set extraOptionResolver(v: ExtraOptionResolver<TEvent> | undefined); /** * 此事件的兼容监听器。 */ get listeningAdapter(): EventListeningAdapter<TEvent> | undefined; set listeningAdapter(v: EventListeningAdapter<TEvent> | undefined); get handlers(): IEventHandler<TEvent>[]; handlerslots: Map<EventPriority, IEventHandler<TEvent>[]>; get hasRegistered(): boolean; private constructor(); addHandler(handler: IEventHandler<TEvent>, priority: EventPriority): void; removeHandler(handler: IEventHandler<TEvent>, priority: EventPriority): boolean; /** * 注销事件信息。 */ static unregister<TEvent extends Function>(eventClass: TEvent | EventRegistry<TEvent>): boolean; /** * 注册事件信息。 */ static register<TEvent extends Function>(eventClass: EventRegistry<TEvent> | TEvent, option?: EventRegisterOptions<TEvent>): EventRegistry<TEvent>; /** * 获取一个事件所对应的事件信息对象。 */ static getRegistry<TEvent extends Function>(eventClass: TEvent): EventRegistry<TEvent>; static getExtends<T extends EventRegistry<TEvent>, TEvent extends Function = T["eventClass"]>(registry: T): EventRegistry<Function>[]; } /** * 事件注册所需要的信息。 */ export interface EventRegisterOptions<TEvent extends Function> { noExtends?: boolean; extraOption?: boolean; extraOptionResolver?: ExtraOptionResolver<TEvent>; listeningAdapter?: EventListeningAdapter<TEvent>; displayName?: string; } export type ExtraOptionResolver<TEvent extends Function> = (event: Prototype<TEvent>, option: EventOptionType<Prototype<TEvent>>) => boolean; type Prototype<TFunction extends Function> = TFunction["prototype"]; export {};