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