API 概述
MSL 提供了一套完整的插件 API,所有 API 都以 plugin_ 为前缀,在插件沙箱环境中自动注入,无需手动引入即可直接使用。
API 列表
| API | 说明 |
|---|---|
| plugin_require | 引入 Node.js 模块 |
| plugin_executeCommand | 执行 Minecraft 指令 |
| plugin_startServer | 启动 Minecraft 服务器 |
| plugin_forceStopServer | 强制停止服务器进程 |
| plugin_registerCommand | 注册自定义指令 |
| plugin_onEvent | 监听事件 |
| plugin_triggerEvent | 触发自定义事件 |
| plugin_log | 输出日志 |
| plugin_generateOfflineUUID | 生成离线玩家 UUID |
| plugin_registerApi | 注册 HTTP API 端点 |
| plugin_push & plugin_pull | 全局数据存储 |
| plugin_getPluginsList | 获取插件列表 |
使用约定
自动注入
所有 plugin_* 函数在插件加载时自动注入到沙箱环境,无需任何引入操作:
javascript
// 直接使用,无需 require
plugin_log("INFO", "插件已加载");
plugin_executeCommand("say Hello");沙箱环境
插件运行在隔离的沙箱环境中,具有以下特点:
- 安全隔离:插件错误不会影响 MSL 主程序
- 资源追踪:事件监听器、指令、定时器等资源会被追踪,插件卸载时自动清理
- 受限访问:插件无法直接访问文件系统,需要通过
plugin_require引入模块
错误处理
MSL 会自动捕获插件中的错误,但建议在关键操作中添加错误处理:
javascript
plugin_onEvent("playerJoin", (time, player) => {
try {
// 你的代码
} catch (error) {
plugin_log("ERROR", `处理失败: ${error.message}`);
}
});调试模式
开启调试模式后,所有 API 调用都会输出日志:
javascript
// 在 config.js 中设置
debug: true
// 或使用命令
msl debug on类型定义
以下是 API 参数和返回值的类型定义:
typescript
// 日志类型
type LogType = "INFO" | "WARN" | "ERROR";
// HTTP 方法
type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
// 插件列表
interface PluginsList {
loaded: string[]; // 已加载的插件
unloaded: string[]; // 未加载的插件
all: string[]; // 所有插件
}
// HTTP 请求/响应对象(Node.js 原生)
interface IncomingMessage {
method: string;
url: string;
headers: Record<string, string>;
on(event: "data", listener: (chunk: Buffer) => void): void;
on(event: "end", listener: () => void): void;
}
interface ServerResponse {
writeHead(statusCode: number, headers?: Record<string, string>): void;
end(data: string | Buffer): void;
}下一步
选择一个 API 查看详细文档,或者查看 新手指南 开始学习插件开发。