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