UNPKG

yoni-mcscripts-lib

Version:

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

58 lines (57 loc) 1.76 kB
import { MinecraftSystem, runTask, isReadonlyMode } from "./basis.js"; import { YoniScheduler } from "./schedule.js"; /** * 对 {@link Minecraft.System} 的模仿,提供系统级事件与函数的支持。 */ class System { run(callback, ...args) { runTask(callback, ...args); } get beforeEvents() { return MinecraftSystem.beforeEvents; } get afterEvents() { return MinecraftSystem.afterEvents; } get currentTick() { return MinecraftSystem.currentTick; } isReadonlyMode() { return isReadonlyMode(); } async waitForRWMode(callback) { if (this.isReadonlyMode()) { let resolve = () => { }; const promise = new Promise((re) => resolve = re); YoniScheduler.runDelayTimerTask(resolve, 0); await promise; } if (callback) callback(); } setInterval(callback, interval) { return YoniScheduler.runCycleTimerTask(callback, interval, interval); } setTimeout(callback, timeout) { return YoniScheduler.runDelayTimerTask(callback, timeout ?? 0); } setIntervalTick(callback, intervalTick) { return YoniScheduler.runCycleTickTask(callback, intervalTick, intervalTick); } setTimeoutTick(callback, timeoutTick) { return YoniScheduler.runDelayTickTask(callback, timeoutTick ?? 0); } clearInterval(id) { return YoniScheduler.removeSchedule(id); } clearTimeout(id) { return YoniScheduler.removeSchedule(id); } clearIntervalTick(id) { return YoniScheduler.removeSchedule(id); } clearTimeoutTick(id) { return YoniScheduler.removeSchedule(id); } } export const system = new System();