plugin_startServer
启动 Minecraft 服务器进程。
函数签名
javascript
plugin_startServer(): void参数说明
此函数不接受任何参数。
返回值
无返回值。
功能描述
plugin_startServer 用于启动 Minecraft 服务器进程。当调用此函数时,MSL 会根据 config.js 中配置的服务器启动参数创建一个新的 Minecraft 服务器进程。
这个函数通常在以下场景使用:
- 服务器意外停止后自动重启
- 通过插件实现定时重启功能
- 在插件中实现服务器管理功能
当服务器进程启动时,会触发 serverStart 事件;当服务器完成启动(显示 "Done" 消息)时,会触发 serverDone 事件。
使用示例
基本用法
javascript
// 启动服务器
plugin_startServer();
plugin_log("INFO", "正在启动服务器...");自动重启功能
javascript
// 监听服务器停止事件,实现自动重启
plugin_onEvent("serverStop", () => {
plugin_log("INFO", "服务器已停止,5秒后自动重启...");
setTimeout(() => {
plugin_startServer();
plugin_log("INFO", "正在重新启动服务器...");
}, 5000);
});定时重启
javascript
// 每6小时重启一次服务器
setInterval(() => {
plugin_log("INFO", "执行定时重启...");
plugin_executeCommand("say 服务器将在30秒后重启");
setTimeout(() => {
plugin_executeCommand("stop");
}, 30000);
}, 6 * 60 * 60 * 1000); // 6小时
// 监听服务器停止后重新启动
let isScheduledRestart = false;
plugin_onEvent("serverStop", () => {
if (isScheduledRestart) {
setTimeout(() => {
plugin_startServer();
isScheduledRestart = false;
}, 5000);
}
});通过 HTTP API 控制
javascript
// 注册 HTTP API 用于远程启动服务器
plugin_registerApi("POST", "/api/server/start", (req, res) => {
let body = "";
req.on("data", chunk => body += chunk);
req.on("end", () => {
plugin_startServer();
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({
success: true,
message: "服务器启动命令已发送"
}));
});
});条件启动
javascript
// 检查服务器状态后启动
function safeStartServer() {
const serverStatus = plugin_pull("serverStatus");
if (serverStatus === "running") {
plugin_log("WARN", "服务器已在运行中");
return false;
}
plugin_startServer();
plugin_push("serverStatus", "starting");
return true;
}
// 监听事件更新状态
plugin_onEvent("serverStart", () => {
plugin_push("serverStatus", "running");
});
plugin_onEvent("serverStop", () => {
plugin_push("serverStatus", "stopped");
});
plugin_onEvent("serverDone", () => {
plugin_push("serverStatus", "ready");
});注意事项
- 重复启动:如果服务器已在运行,调用此函数会输出警告日志但不会创建新进程
- 配置依赖:服务器启动参数来自
config.js中的minecraft.args配置 - 异步操作:服务器启动是异步的,不会阻塞插件代码
- 事件顺序:
serverStart事件在进程创建时触发,serverDone事件在服务器完全启动后触发
相关 API
- plugin_forceStopServer - 强制停止服务器
- plugin_executeCommand - 执行指令(可用于执行
stop指令)
相关事件
serverStart- 服务器进程启动时触发serverDone- 服务器启动完成时触发serverStop- 服务器进程停止时触发