summaryrefslogtreecommitdiff
path: root/dist/2b2w/main.js
blob: 44119bbbb71dc0ff1d5db54447d20863a87f732b (plain) (blame)
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const minecraft_protocol_1 = __importDefault(require("minecraft-protocol"));
const webserver = require('./webserver.js');
const opn_1 = __importDefault(require("opn"));
const secrets_json_1 = __importDefault(require("./secrets.json"));
const config_json_1 = __importDefault(require("./config.json"));
webserver.createServer(config_json_1.default.ports.web);
webserver.password = config_json_1.default.password;
webserver.onstart(() => {
    startQueuing();
});
webserver.onstop(() => {
    stop();
});
if (config_json_1.default.openBrowserOnStart) {
    opn_1.default('http://localhost:' + config_json_1.default.ports.web);
}
let proxyClient;
let client;
let server;
function stop() {
    webserver.isInQueue = false;
    webserver.queuePlace = "None";
    webserver.ETA = "None";
    client.end("disconnect");
    if (proxyClient) {
        proxyClient.end("Stopped the proxy.");
    }
    server.close();
}
exports.stop = stop;
function startQueuing() {
    var playerId;
    webserver.isInQueue = true;
    client = minecraft_protocol_1.default.createClient({
        host: "2b2t.org",
        port: 25565,
        username: secrets_json_1.default.username,
        password: secrets_json_1.default.password,
        version: config_json_1.default.MCversion
    });
    let finishedQueue = false;
    client.on("packet", (data, meta) => {
        if (!finishedQueue && meta.name === "playerlist_header") {
            let headermessage = JSON.parse(data.header);
            let positioninqueue = headermessage.text.split("\n")[5].substring(25);
            let ETA = headermessage.text.split("\n")[6].substring(27);
            webserver.queuePlace = positioninqueue;
            webserver.ETA = ETA;
            server.motd = `Place in queue: ${positioninqueue}`;
        }
        if (meta.name == "login") {
            playerId = data.entityId;
        }
        if (finishedQueue === false && meta.name === "chat") {
            let chatMessage = JSON.parse(data.message);
            if (chatMessage.text && chatMessage.text === "Connecting to the server...") {
                if (webserver.restartQueue && proxyClient == null) {
                    stop();
                    setTimeout(startQueuing, 100);
                }
                else {
                    finishedQueue = true;
                    webserver.queuePlace = "FINISHED";
                    webserver.ETA = "NOW";
                }
            }
        }
        if (proxyClient) {
            filterPacketAndSend(data, meta, proxyClient);
        }
    });
    client.on('end', () => {
        if (proxyClient) {
            proxyClient.end("Connection reset by 2b2t server.\nReconnecting...");
            proxyClient = null;
        }
        stop();
    });
    client.on('error', (err) => {
        if (proxyClient) {
            proxyClient.end(`Connection error by 2b2t server.\n Error message: ${err}\nReconnecting...`);
            proxyClient = null;
        }
        console.log('err', err);
        stop();
    });
    server = minecraft_protocol_1.default.createServer({
        'online-mode': true,
        encryption: true,
        host: '0.0.0.0',
        port: config_json_1.default.ports.minecraft,
        version: config_json_1.default.MCversion,
        'max-players': maxPlayers = 1
    });
    server.on('login', (newProxyClient) => {
        if (newProxyClient.username !== client.username) {
            stop();
        }
        newProxyClient.write('login', {
            entityId: playerId,
            levelType: 'default',
            gameMode: 0,
            dimension: 0,
            difficulty: 2,
            maxPlayers: server.maxPlayers,
            reducedDebugInfo: false
        });
        newProxyClient.write('position', {
            x: 0,
            y: 1.62,
            z: 0,
            yaw: 0,
            pitch: 0,
            flags: 0x00
        });
        newProxyClient.on('packet', (data, meta) => {
            filterPacketAndSend(data, meta, proxyClient);
        });
        proxyClient = newProxyClient;
    });
}
exports.startQueuing = startQueuing;
function filterPacketAndSend(data, meta, dest) {
    if (meta.name != "keep_alive" && meta.name != "update_time") {
        dest.write(meta.name, data);
    }
}
exports.filterPacketAndSend = filterPacketAndSend;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy8yYjJ3L21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0RUFBb0M7QUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7QUFDM0MsOENBQXNCO0FBQ3RCLGtFQUFxQztBQUNyQyxnRUFBbUM7QUFFbkMsU0FBUyxDQUFDLFlBQVksQ0FBQyxxQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxTQUFTLENBQUMsUUFBUSxHQUFHLHFCQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3JDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ3RCLFlBQVksRUFBRSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7SUFDckIsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQztBQUVILElBQUkscUJBQU0sQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixhQUFHLENBQUMsbUJBQW1CLEdBQUcscUJBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Q0FDL0M7QUFJRCxJQUFJLFdBQVcsQ0FBQztBQUNoQixJQUFJLE1BQU0sQ0FBQztBQUNYLElBQUksTUFBTSxDQUFDO0FBR1gsU0FBZ0IsSUFBSTtJQUNuQixTQUFTLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUM1QixTQUFTLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztJQUM5QixTQUFTLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztJQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pCLElBQUksV0FBVyxFQUFFO1FBQ2hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQUN0QztJQUNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FB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