yoni-mcscripts-lib
Version:
为 Minecraft Script API 中的部分接口创建了 wrapper,并提供简单的事件管理器和任务管理器,另附有一些便于代码编写的一些小工具。
69 lines (68 loc) • 2.71 kB
TypeScript
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 {};