📜  服务器状态 minecraft javascript (1)

📅  最后修改于: 2023-12-03 15:10:38.768000             🧑  作者: Mango

服务器状态监控工具

介绍

本工具通过使用JavaScript的Node.js模块来监控你的Minecraft服务器状态。它可以检查服务器是否在线、检查玩家数量、检查Ping和传送延迟等。

安装
  1. 首先,你需要安装Node.js。如果你还没有安装,请访问 https://nodejs.org/en/download/ 下载并安装。

  2. 接下来,你需要通过运行以下命令来安装所需的依赖项:

npm install mineflayer ping mcdata
使用

你可以将以下代码保存为JavaScript文件,并通过运行 node <文件名> 来启动监控工具:

const mineflayer = require('mineflayer');
const ping = require('ping');
const mcdata = require('mcdata');

// 服务器的IP和端口
const serverIP = "服务器IP";
const serverPort = 25565;

// 监控间隔时间,以毫秒为单位
const monitoringInterval = 5000;

// 服务器状态
let serverStatus = {};

// 连接到服务器
const bot = mineflayer.createBot({
    host: serverIP,
    port: serverPort
});

// 监听bot连接成功事件
bot.once('spawn', () => {
    console.log(`成功连接至${serverIP}:${serverPort}`);

    // 每隔一段时间监控一次服务器状态
    setInterval(() => {
        // 检查服务器是否在线
        ping.sys.probe(serverIP, (isAlive) => {
            serverStatus.isOnline = isAlive;

            if (isAlive) {
                // 如果在线,则获取服务器信息
                bot.mcData.ping((err, result) => {
                    if (err) {
                        console.error(err);
                    } else {
                        serverStatus.version = result.version.name;
                        serverStatus.players = `${result.players.online}/${result.players.max}`;
                        serverStatus.ping = `${result.ping}ms`;
                    }
                });

                // 获取传送延迟
                bot.test.setInventorySlot(36, mcdata.itemsByName.bedrock.id, 0, (err) => {
                    if (err) {
                        console.error(err);
                    } else {
                        bot.test.bench((err) => {
                            if (err) {
                                console.error(err);
                            } else {
                                const delay = bot.test.getInventorySlot(36).nbt.value.Delay.value;
                                serverStatus.delay = `${delay}ms`;
                            }
                        });
                    }
                });
            }
        });
    }, monitoringInterval);
});

// 监听bot断开连接事件
bot.on('end', () => {
    console.log(`与${serverIP}:${serverPort}的连接已断开`);
    serverStatus = {};
});
返回值

监控工具将返回一个包含服务器状态信息的对象,信息包括:

  • isOnline:Boolean类型,表示服务器是否在线。
  • version:String类型,表示服务器版本。
  • players:String类型,表示当前玩家数量和最大玩家数量。
  • ping:String类型,表示服务器Ping。
  • delay:String类型,表示传送延迟。

你可以根据需要对返回值进行自定义处理。

维护者
许可证

本工具使用 MIT 许可证。