UNPKG

mcraft-fun-mineflayer

Version:

Mineflayer viewer (connector) for mcraft.fun project and vanilla Minecraft client! Both TCP and WebSockets servers are supported.

56 lines (55 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPacketsStudioServer = createPacketsStudioServer; exports.handlePacket = handlePacket; exports.handleClientDisconnect = handleClientDisconnect; const ws_1 = require("ws"); let wss = null; const clients = new Set(); function createPacketsStudioServer(port = 8089) { if (wss) return; wss = new ws_1.WebSocketServer({ port }); wss.on('connection', (ws) => { console.log('PacketsStudio client connected'); clients.add(ws); ws.on('close', () => { console.log('PacketsStudio client disconnected'); clients.delete(ws); }); }); console.log(`PacketsStudio WebSocket server started on port ${port}`); } function handlePacket(connectionIndex, isFromServer, name, data, state, buffer) { if (!wss || clients.size === 0) return; const message = { connectionIndex, isFromServer, name, data, buffer: buffer ? Buffer.from(buffer) : undefined, timestamp: Date.now(), type: 'packet', state }; broadcastMessage(message); } function handleClientDisconnect(connectionIndex) { if (!wss || clients.size === 0) return; const message = { connectionIndex, type: 'clientDisconnect', timestamp: Date.now() }; broadcastMessage(message); } function broadcastMessage(message) { const messageStr = JSON.stringify(message); for (const client of clients) { if (client.readyState === ws_1.WebSocket.OPEN) { client.send(messageStr); } } }