yoni-mcscripts-lib
Version:
为 Minecraft Script API 中的部分接口创建了 wrapper,并提供简单的事件管理器和任务管理器,另附有一些便于代码编写的一些小工具。
61 lines (57 loc) • 1.99 kB
text/typescript
import { Minecraft, MinecraftSystem, runTask, overworld, isReadonlyMode } from "./basis.js";
import { YoniScheduler } from "./schedule.js";
/**
* 对 {@link Minecraft.System} 的模仿,提供系统级事件与函数的支持。
*/
class System {
run<P extends any[]>(callback: (...args: P) => void, ...args: P){
runTask(callback, ...args);
}
get beforeEvents(){
return MinecraftSystem.beforeEvents;
}
get afterEvents(){
return MinecraftSystem.afterEvents;
}
get currentTick(){
return MinecraftSystem.currentTick;
}
isReadonlyMode(): boolean {
return isReadonlyMode();
}
async waitForRWMode(callback?: () => void): Promise<void> {
if (this.isReadonlyMode()){
let resolve: Function = () => {};
const promise = new Promise((re) => resolve = re);
YoniScheduler.runDelayTimerTask(resolve as () => void, 0);
await promise;
}
if (callback)
callback();
}
setInterval(callback: () => void, interval: number){
return YoniScheduler.runCycleTimerTask(callback, interval, interval);
}
setTimeout(callback: () => void, timeout?: number){
return YoniScheduler.runDelayTimerTask(callback, timeout ?? 0);
}
setIntervalTick(callback: () => void, intervalTick: number){
return YoniScheduler.runCycleTickTask(callback, intervalTick, intervalTick);
}
setTimeoutTick(callback: () => void, timeoutTick?: number){
return YoniScheduler.runDelayTickTask(callback, timeoutTick ?? 0);
}
clearInterval(id: number){
return YoniScheduler.removeSchedule(id);
}
clearTimeout(id: number){
return YoniScheduler.removeSchedule(id);
}
clearIntervalTick(id: number){
return YoniScheduler.removeSchedule(id);
}
clearTimeoutTick(id: number){
return YoniScheduler.removeSchedule(id);
}
}
export const system = new System();