plugin_forceStopServer
强制终止 Minecraft 服务器进程。
函数签名
javascript
plugin_forceStopServer(): void参数说明
此函数不接受任何参数。
返回值
无返回值。
功能描述
plugin_forceStopServer 用于强制终止 Minecraft 服务器进程。与正常执行 stop 指令不同,这个函数会直接杀死服务器进程,不会等待服务器保存数据或正常关闭。
这个函数通常在以下场景使用:
- 服务器无响应(卡死)时强制关闭
- 实现紧急停止功能
- 在特定条件下需要立即终止服务器
警告
强制停止服务器可能导致数据丢失!服务器进程被强制终止时,可能无法完成世界保存操作。仅在紧急情况下使用此函数,正常情况下应使用 plugin_executeCommand("stop") 来安全关闭服务器。
使用示例
基本用法
javascript
// 强制停止服务器
plugin_forceStopServer();
plugin_log("WARN", "服务器进程已被强制终止");紧急停止功能
javascript
// 注册紧急停止指令
plugin_registerCommand("!emergency", (player) => {
// 检查权限
const admins = ["Steve", "Admin"];
if (!admins.includes(player)) {
plugin_executeCommand(`tellraw ${player} {"text":"权限不足","color":"red"}`);
return;
}
plugin_log("WARN", `${player} 触发了紧急停止`);
plugin_executeCommand("say 服务器即将强制关闭!");
setTimeout(() => {
plugin_forceStopServer();
}, 3000);
});服务器无响应检测
javascript
// 检测服务器是否无响应
let lastLogTime = Date.now();
const TIMEOUT = 60000; // 60秒无日志视为无响应
plugin_onEvent("serverLog", (line) => {
lastLogTime = Date.now();
});
// 定期检查
setInterval(() => {
const elapsed = Date.now() - lastLogTime;
if (elapsed > TIMEOUT) {
plugin_log("ERROR", "服务器可能无响应,执行强制停止");
plugin_forceStopServer();
// 5秒后重启
setTimeout(() => {
plugin_startServer();
}, 5000);
}
}, 30000); // 每30秒检查一次通过 HTTP API 紧急停止
javascript
// 注册 HTTP API 用于远程强制停止
plugin_registerApi("POST", "/api/server/force-stop", (req, res) => {
plugin_log("WARN", "通过 HTTP API 触发强制停止");
plugin_forceStopServer();
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({
success: true,
message: "服务器进程已强制终止"
}));
});安全停止与强制停止对比
javascript
// 安全停止(推荐)
function safeStop() {
plugin_executeCommand("save-all");
setTimeout(() => {
plugin_executeCommand("stop");
}, 5000);
}
// 强制停止(紧急情况)
function forceStop() {
plugin_log("WARN", "执行强制停止,可能导致数据丢失!");
plugin_forceStopServer();
}
// 根据情况选择停止方式
function stopServer(force = false) {
if (force) {
forceStop();
} else {
safeStop();
}
}平台差异
MSL 在不同操作系统上使用不同的方式终止进程:
- Windows:使用
taskkill /T /F /PID <pid>命令 - Linux/macOS:使用
SIGKILL信号
注意事项
- 数据安全:强制停止可能导致未保存的数据丢失
- 玩家断开:玩家会突然断开连接,不会显示正常的退出消息
- 世界损坏:极端情况下可能导致世界文件损坏
- 自动重启:如果配置了自动重启,服务器可能会在停止后自动重启
相关 API
- plugin_startServer - 启动服务器
- plugin_executeCommand - 执行指令(推荐使用
stop指令安全关闭)
相关事件
serverStop- 服务器进程停止时触发(无论是正常停止还是强制停止)