forked from michaljaz/webmc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
83 lines (82 loc) · 2.91 KB
/
server.js
File metadata and controls
83 lines (82 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Generated by CoffeeScript 2.5.1
(function() {
module.exports = function(config) {
var Chunk, app, express, fs, http, io, mineflayer, port, server, sf, socketInfo, vec3;
fs = require("fs");
http = require("http");
server = http.createServer();
io = require("socket.io")(server);
express = require('express');
app = express();
mineflayer = require('mineflayer');
Chunk = require("prismarine-chunk")("1.16.1");
vec3 = require("vec3");
sf = {};
port = config["express-port"];
socketInfo = {};
app.use(express.static(__dirname + "/client/"));
app.use(function(req, res, next) {
res.set('Cache-Control', 'no-store');
return next();
});
app.get("/websocket/", function(req, res) {
return res.send(String(config["websocket-port"]));
});
app.get("/host/", function(req, res) {
return res.send(String(config["host"]));
});
app.listen(port);
server.listen(config["websocket-port"]);
return io.sockets.on("connection", function(socket) {
socket.on("initClient", function(data) {
console.log("[+] " + data.nick);
socketInfo[socket.id] = data;
socketInfo[socket.id].bot = mineflayer.createBot({
host: config.realServer.ip,
port: config.realServer.port,
username: socketInfo[socket.id].nick,
version: "1.16.3"
});
socketInfo[socket.id].bot._client.on("map_chunk", function(packet) {
var cell;
cell = new Chunk();
cell.load(packet.chunkData, packet.bitMap, false, true);
io.to(socket.id).emit("mapChunk", cell.sections, packet.x, packet.z);
});
socketInfo[socket.id].bot.on('chat', function(username, message) {
if (username === socketInfo[socket.id].bot.username) {
return;
}
socketInfo[socket.id].bot.chat(message);
});
socketInfo[socket.id].bot.on('move', function() {
try {
io.to(socket.id).emit("move", socketInfo[socket.id].bot.entity.position);
} catch (error) {}
});
socketInfo[socket.id].bot.on('blockUpdate', function(oldb, newb) {
io.to(socket.id).emit("blockUpdate", [newb.position.x, newb.position.y, newb.position.z, newb.stateId]);
});
});
socket.on("move", function(state, toggle) {
try {
socketInfo[socket.id].bot.setControlState(state, toggle);
} catch (error) {}
});
socket.on("rotate", function(data) {
try {
socketInfo[socket.id].bot.look(...data);
} catch (error) {}
});
return socket.on("disconnect", function() {
console.log("[-] " + socketInfo[socket.id].nick);
try {
//end bot session
socketInfo[socket.id].bot.end();
//delete socketinfo
delete socketInfo[socket.id];
} catch (error) {}
});
});
};
}).call(this);