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
JavaScript
;
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);
}
}
}