UNPKG

yoni-mcscripts-lib

Version:

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

44 lines (43 loc) 1.57 kB
import { EventPriority } from "../EventPriority.js"; import { manager } from "../EventManager.js"; import { EventListenerData, sEventListenerData } from "../decorators/EventListener.js"; function listenEvent(listenOptions, callback) { let tevent; let priority = EventPriority.NORMAL; let ignoreCancelled = false; let eventOptions = undefined; if (listenOptions instanceof Function) { tevent = listenOptions; } else { tevent = listenOptions.event; if (listenOptions.priority) priority = listenOptions.priority; if (listenOptions.eventOptions != null) eventOptions = listenOptions.eventOptions; if (listenOptions.ignoreCancelled != null) ignoreCancelled = listenOptions.ignoreCancelled; } let listenerOptions = { ignoreCancelled, priority: EventPriority.NORMAL }; if (eventOptions) { listenerOptions.options = eventOptions; } let listener = new SingleHandlerEventListener(tevent, callback, listenerOptions); manager.addListener(listener); return listener; } export class SingleHandlerEventListener { constructor(event, cb, options) { this[sEventListenerData].handlerEntries[0] = [ event, options?.priority ?? EventPriority.NORMAL, { options: options?.options, onEvent: cb, ignoreCancelled: options?.ignoreCancelled ?? true } ]; } [sEventListenerData] = new EventListenerData(); } export { listenEvent };