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