UNPKG

yoni-mcscripts-lib

Version:

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

102 lines (101 loc) 2.73 kB
import { Minecraft } from "./modules/Minecraft.js"; export { Minecraft }; export { Gametest } from "./modules/Gametest.js"; export const VanillaWorld = Minecraft.world; export const VanillaScoreboard = VanillaWorld.scoreboard; export const MinecraftSystem = Minecraft.system; /** * 在游戏刻的固定时机运行函数。 */ export function runTask(callback, ...args) { if (args.length === 0) MinecraftSystem.run(callback); else MinecraftSystem.run(() => { callback(...args); }); } /** * overworld dimension * @type {Minecraft.Dimension} */ export const overworld = VanillaWorld.getDimension(Minecraft.MinecraftDimensionTypes.overworld); /** * 返回当前是否为只读模式上下文(通常在before事件的回调执行时出现)。 */ export function isReadonlyMode() { try { overworld.runCommand("help"); } catch { return true; } return false; } /** * 在上下文清空后立即运行函数。 */ export function runImmediate(func, ...args) { runImmediate.run(func, args); } runImmediate.run = async function run(func, args) { await void 0; //pause func func(...args); }; /** * a type contains a set of statusCode */ export var StatusCode; (function (StatusCode) { StatusCode[StatusCode["fail"] = -2147483648] = "fail"; StatusCode[StatusCode["error"] = -2147483646] = "error"; StatusCode[StatusCode["success"] = 0] = "success"; })(StatusCode || (StatusCode = {})); /** * 返回一个维度对象 * @param dimid - something means a dimension * @returns dimension object */ function dim(dimid = 0) { if (dimid instanceof Minecraft.Dimension) return dimid; switch (dimid) { case 0: case "overworld": case Minecraft.MinecraftDimensionTypes.overworld: return VanillaWorld.getDimension(Minecraft.MinecraftDimensionTypes.overworld); case -1: case "nether": case Minecraft.MinecraftDimensionTypes.nether: return VanillaWorld.getDimension(Minecraft.MinecraftDimensionTypes.nether); case 1: case "the end": case "theEnd": case "the_end": case Minecraft.MinecraftDimensionTypes.theEnd: return VanillaWorld.getDimension(Minecraft.MinecraftDimensionTypes.theEnd); default: try { return VanillaWorld.getDimension(dimid); } catch { return dim(0); } } } /* * 主世界 * @type {Minecraft.Dimension} */ dim.overworld = dim(0); /* * 末地 * @type {Minecraft.Dimension} */ dim.theEnd = dim(1); /* * 下界 * @type {Minecraft.Dimension} */ dim.nether = dim(-1); export { dim };