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
115 lines (114 loc) · 4.11 KB
/
server.js
File metadata and controls
115 lines (114 loc) · 4.11 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// Generated by CoffeeScript 2.5.1
(function() {
module.exports = function(config) {
var Chunk, Convert, app, convert, express, fs, http, io, mineflayer, port, server, sf, socketInfo, vec3;
//biblioteki
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")(config.realServer.version);
vec3 = require("vec3");
Convert = require('ansi-to-html');
convert = new Convert();
//początkowe zmienne
sf = {};
port = config["express-port"];
socketInfo = {};
//Konfiguracja serwera express
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"]);
//websocket
return io.sockets.on("connection", function(socket) {
socket.on("initClient", function(data) {
console.log("[+] " + data.nick);
//Dodawanie informacji o graczu do socketInfo
socketInfo[socket.id] = data;
socketInfo[socket.id].bot = mineflayer.createBot({
host: config.realServer.ip,
port: config.realServer.port,
username: socketInfo[socket.id].nick,
version: config.realServer.version
});
//Eventy otrzymywane z serwera minecraftowego
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, packet.biomes);
});
socketInfo[socket.id].bot.on('chat', function(username, message) {
if (username === socketInfo[socket.id].bot.username) {
return;
}
});
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('health', function() {
try {
io.to(socket.id).emit("hp", socketInfo[socket.id].bot.health);
io.to(socket.id).emit("food", socketInfo[socket.id].bot.food);
} catch (error) {}
});
socketInfo[socket.id].bot.on('spawn', function() {
try {
io.to(socket.id).emit("spawn");
} catch (error) {}
});
socketInfo[socket.id].bot.on('message', function(msg) {
try {
io.to(socket.id).emit("msg", convert.toHtml(msg.toAnsi()));
} catch (error) {}
});
socketInfo[socket.id].bot.on('experience', function() {
try {
io.to(socket.id).emit("xp", socketInfo[socket.id].bot.experience);
} 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]);
});
});
//eventy otrzymywane od klienta
socket.on("move", function(state, toggle) {
try {
socketInfo[socket.id].bot.setControlState(state, toggle);
} catch (error) {}
});
socket.on("command", function(com) {
try {
socketInfo[socket.id].bot.chat(com);
} catch (error) {}
});
socket.on("rotate", function(data) {
try {
socketInfo[socket.id].bot.look(...data);
} catch (error) {}
});
return socket.on("disconnect", function() {
try {
console.log("[-] " + socketInfo[socket.id].nick);
socketInfo[socket.id].bot.end();
delete socketInfo[socket.id];
} catch (error) {}
});
});
};
}).call(this);