@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
67 lines (66 loc) • 8.89 kB
JavaScript
;
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_network_Identifiers = require("../Identifiers.cjs.cjs");
const require_network_packet_PlayStatusPacket = require("../packet/PlayStatusPacket.cjs.cjs");
const require_network_packet_ResourcePacksInfoPacket = require("../packet/ResourcePacksInfoPacket.cjs.cjs");
const require_network_type_PlayStatusType = require("../type/PlayStatusType.cjs.cjs");
const require_Player = require("../../Player.cjs.cjs");
//#region src/network/handler/LoginHandler.ts
var LoginHandler = class {
static NetID = require_network_Identifiers.default.LoginPacket;
/**
* @TODO: Check if player count >= max players
* @TODO: encryption handshake.
*/
async handle(packet, server, connection) {
const playStatus = new require_network_packet_PlayStatusPacket.default();
if (packet.protocol !== require_network_Identifiers.default.Protocol) {
playStatus.status = packet.protocol < require_network_Identifiers.default.Protocol ? require_network_type_PlayStatusType.default.LoginFailedClient : require_network_type_PlayStatusType.default.LoginFailedServer;
await connection.sendDataPacket(playStatus, true);
return;
}
if (!packet.displayName) {
connection.disconnect("Invalid username!", false);
return;
}
const player = new require_Player.default({
connection,
world: server.getWorldManager().getDefaultWorld(),
server,
uuid: packet.identity
});
player.setName(packet.displayName);
player.xuid = packet.XUID;
player.randomId = packet.clientRandomId;
player.locale = packet.languageCode;
player.skin = packet.skin;
player.device = packet.device;
await server.getSessionManager().findPlayer({
name: packet.displayName,
xuid: packet.XUID
})?.kick("Logged in from another location");
if (!player.xuid && server.getConfig().getOnlineMode()) {
await player.kick("Server is in online-mode!");
return;
}
const reason = server.getBanManager().isBanned(player);
if (reason !== false) {
await player.kick(`You have been banned${reason ? ` for reason: ${reason}` : ""}!`);
return;
}
await player.enable();
await connection.initPlayerConnection(server, player).sendPlayStatus(require_network_type_PlayStatusType.default.LoginSuccess);
const resourcePacksInfo = new require_network_packet_ResourcePacksInfoPacket.default();
resourcePacksInfo.resourcePackRequired = false;
resourcePacksInfo.forceServerPacksEnabled = false;
resourcePacksInfo.hasScripts = false;
resourcePacksInfo.hasAddonPacks = false;
await connection.sendDataPacket(resourcePacksInfo, true);
}
};
//#endregion
exports.default = LoginHandler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5IYW5kbGVyLmNqcy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvaGFuZGxlci9Mb2dpbkhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSAnLi4vLi4vJztcbmltcG9ydCB0eXBlIFNlcnZlciBmcm9tICcuLi8uLi9TZXJ2ZXInO1xuaW1wb3J0IHR5cGUgQ2xpZW50Q29ubmVjdGlvbiBmcm9tICcuLi9DbGllbnRDb25uZWN0aW9uJztcbmltcG9ydCBJZGVudGlmaWVycyBmcm9tICcuLi9JZGVudGlmaWVycyc7XG5pbXBvcnQgeyBQbGF5U3RhdHVzUGFja2V0IH0gZnJvbSAnLi4vUGFja2V0cyc7XG5pbXBvcnQgdHlwZSBMb2dpblBhY2tldCBmcm9tICcuLi9wYWNrZXQvTG9naW5QYWNrZXQnO1xuaW1wb3J0IFJlc291cmNlUGFja3NJbmZvUGFja2V0IGZyb20gJy4uL3BhY2tldC9SZXNvdXJjZVBhY2tzSW5mb1BhY2tldCc7XG5pbXBvcnQgUGxheVN0YXR1c1R5cGUgZnJvbSAnLi4vdHlwZS9QbGF5U3RhdHVzVHlwZSc7XG5pbXBvcnQgdHlwZSBQcmVMb2dpblBhY2tldEhhbmRsZXIgZnJvbSAnLi9QcmVMb2dpblBhY2tldEhhbmRsZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dpbkhhbmRsZXIgaW1wbGVtZW50cyBQcmVMb2dpblBhY2tldEhhbmRsZXI8TG9naW5QYWNrZXQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuTG9naW5QYWNrZXQ7XG5cbiAgICAvKipcbiAgICAgKiBAVE9ETzogQ2hlY2sgaWYgcGxheWVyIGNvdW50ID49IG1heCBwbGF5ZXJzXG4gICAgICogQFRPRE86IGVuY3J5cHRpb24gaGFuZHNoYWtlLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBoYW5kbGUocGFja2V0OiBMb2dpblBhY2tldCwgc2VydmVyOiBTZXJ2ZXIsIGNvbm5lY3Rpb246IENsaWVudENvbm5lY3Rpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcGxheVN0YXR1cyA9IG5ldyBQbGF5U3RhdHVzUGFja2V0KCk7XG5cbiAgICAgICAgLy8gS2ljayBjbGllbnQgaWYgaGFzIG5ld2VyIC8gb2xkZXIgY2xpZW50IHZlcnNpb25cbiAgICAgICAgaWYgKHBhY2tldC5wcm90b2NvbCAhPT0gSWRlbnRpZmllcnMuUHJvdG9jb2wpIHtcbiAgICAgICAgICAgIHBsYXlTdGF0dXMuc3RhdHVzID1cbiAgICAgICAgICAgICAgICBwYWNrZXQucHJvdG9jb2wgPCBJZGVudGlmaWVycy5Qcm90b2NvbFxuICAgICAgICAgICAgICAgICAgICA/IFBsYXlTdGF0dXNUeXBlLkxvZ2luRmFpbGVkQ2xpZW50XG4gICAgICAgICAgICAgICAgICAgIDogUGxheVN0YXR1c1R5cGUuTG9naW5GYWlsZWRTZXJ2ZXI7XG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnNlbmREYXRhUGFja2V0KHBsYXlTdGF0dXMsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gS2ljayB0aGUgcGxheWVyIGlmIHRoZWlyIHVzZXJuYW1lIGlzIGludmFsaWRcbiAgICAgICAgaWYgKCFwYWNrZXQuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24uZGlzY29ubmVjdCgnSW52YWxpZCB1c2VybmFtZSEnLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwbGF5ZXIgPSBuZXcgUGxheWVyKHtcbiAgICAgICAgICAgIGNvbm5lY3Rpb24sXG4gICAgICAgICAgICB3b3JsZDogc2VydmVyLmdldFdvcmxkTWFuYWdlcigpLmdldERlZmF1bHRXb3JsZCgpISxcbiAgICAgICAgICAgIHNlcnZlcixcbiAgICAgICAgICAgIHV1aWQ6IHBhY2tldC5pZGVudGl0eVxuICAgICAgICB9KTtcblxuICAgICAgICBwbGF5ZXIuc2V0TmFtZShwYWNrZXQuZGlzcGxheU5hbWUpO1xuICAgICAgICBwbGF5ZXIueHVpZCA9IHBhY2tldC5YVUlEO1xuICAgICAgICBwbGF5ZXIucmFuZG9tSWQgPSBwYWNrZXQuY2xpZW50UmFuZG9tSWQ7XG4gICAgICAgIHBsYXllci5sb2NhbGUgPSBwYWNrZXQubGFuZ3VhZ2VDb2RlO1xuICAgICAgICBwbGF5ZXIuc2tpbiA9IHBhY2tldC5za2luO1xuICAgICAgICBwbGF5ZXIuZGV2aWNlID0gcGFja2V0LmRldmljZTtcblxuICAgICAgICAvLyBQbGF5ZXIgd2l0aCBzYW1lIG5hbWUgb3IgeHVpZCBpcyBhbHJlYWR5IGNvbm5lY3RlZCxcbiAgICAgICAgLy8gc28ga2ljayB0aGUgb2xkIHBsYXllciBhbmQgbGV0IHRoZSBuZXcgcGxheWVyIGNvbm5lY3QuXG4gICAgICAgIGF3YWl0IHNlcnZlclxuICAgICAgICAgICAgLmdldFNlc3Npb25NYW5hZ2VyKClcbiAgICAgICAgICAgIC5maW5kUGxheWVyKHsgbmFtZTogcGFja2V0LmRpc3BsYXlOYW1lLCB4dWlkOiBwYWNrZXQuWFVJRCB9KVxuICAgICAgICAgICAgPy5raWNrKCdMb2dnZWQgaW4gZnJvbSBhbm90aGVyIGxvY2F0aW9uJyk7XG5cbiAgICAgICAgaWYgKCFwbGF5ZXIueHVpZCAmJiBzZXJ2ZXIuZ2V0Q29uZmlnKCkuZ2V0T25saW5lTW9kZSgpKSB7XG4gICAgICAgICAgICBhd2FpdCBwbGF5ZXIua2ljaygnU2VydmVyIGlzIGluIG9ubGluZS1tb2RlIScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVhc29uID0gc2VydmVyLmdldEJhbk1hbmFnZXIoKS5pc0Jhbm5lZChwbGF5ZXIpO1xuICAgICAgICBpZiAocmVhc29uICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgYXdhaXQgcGxheWVyLmtpY2soYFlvdSBoYXZlIGJlZW4gYmFubmVkJHtyZWFzb24gPyBgIGZvciByZWFzb246ICR7cmVhc29ufWAgOiAnJ30hYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBwbGF5ZXIuZW5hYmxlKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHRoZSBwbGF5ZXIgY29ubmVjdGlvbiB0byBiZSByZWNvZ25pemVkIGFzIGEgY29ubmVjdGVkIHBsYXllclxuICAgICAgICBjb25zdCBzZXNzaW9uID0gY29ubmVjdGlvbi5pbml0UGxheWVyQ29ubmVjdGlvbihzZXJ2ZXIsIHBsYXllcik7XG4gICAgICAgIGF3YWl0IHNlc3Npb24uc2VuZFBsYXlTdGF0dXMoUGxheVN0YXR1c1R5cGUuTG9naW5TdWNjZXNzKTtcblxuICAgICAgICAvLyBGaW5hbGl6ZSBjb25uZWN0aW9uIGhhbmRzaGFrZVxuICAgICAgICBjb25zdCByZXNvdXJjZVBhY2tzSW5mbyA9IG5ldyBSZXNvdXJjZVBhY2tzSW5mb1BhY2tldCgpO1xuICAgICAgICByZXNvdXJjZVBhY2tzSW5mby5yZXNvdXJjZVBhY2tSZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICByZXNvdXJjZVBhY2tzSW5mby5mb3JjZVNlcnZlclBhY2tzRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICByZXNvdXJjZVBhY2tzSW5mby5oYXNTY3JpcHRzID0gZmFsc2U7XG4gICAgICAgIHJlc291cmNlUGFja3NJbmZvLmhhc0FkZG9uUGFja3MgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5zZW5kRGF0YVBhY2tldChyZXNvdXJjZVBhY2tzSW5mbywgdHJ1ZSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVVBLElBQXFCLGVBQXJCLE1BQWdGO0NBQzVFLE9BQWMsUUFBUSw0QkFBQSxRQUFZOzs7OztDQU1sQyxNQUFhLE9BQU8sUUFBcUIsUUFBZ0IsWUFBNkM7RUFDbEcsTUFBTSxhQUFhLElBQUksd0NBQUEsUUFBaUI7RUFHeEMsSUFBSSxPQUFPLGFBQWEsNEJBQUEsUUFBWSxVQUFVO0dBQzFDLFdBQVcsU0FDUCxPQUFPLFdBQVcsNEJBQUEsUUFBWSxXQUN4QixvQ0FBQSxRQUFlLG9CQUNmLG9DQUFBLFFBQWU7R0FDekIsTUFBTSxXQUFXLGVBQWUsWUFBWSxJQUFJO0dBQ2hEO0VBQ0o7RUFHQSxJQUFJLENBQUMsT0FBTyxhQUFhO0dBQ3JCLFdBQVcsV0FBVyxxQkFBcUIsS0FBSztHQUNoRDtFQUNKO0VBRUEsTUFBTSxTQUFTLElBQUksZUFBQSxRQUFPO0dBQ3RCO0dBQ0EsT0FBTyxPQUFPLGdCQUFnQixFQUFFLGdCQUFnQjtHQUNoRDtHQUNBLE1BQU0sT0FBTztFQUNqQixDQUFDO0VBRUQsT0FBTyxRQUFRLE9BQU8sV0FBVztFQUNqQyxPQUFPLE9BQU8sT0FBTztFQUNyQixPQUFPLFdBQVcsT0FBTztFQUN6QixPQUFPLFNBQVMsT0FBTztFQUN2QixPQUFPLE9BQU8sT0FBTztFQUNyQixPQUFPLFNBQVMsT0FBTztFQUl2QixNQUFNLE9BQ0Qsa0JBQWtCLEVBQ2xCLFdBQVc7R0FBRSxNQUFNLE9BQU87R0FBYSxNQUFNLE9BQU87RUFBSyxDQUFDLEdBQ3pELEtBQUssaUNBQWlDO0VBRTVDLElBQUksQ0FBQyxPQUFPLFFBQVEsT0FBTyxVQUFVLEVBQUUsY0FBYyxHQUFHO0dBQ3BELE1BQU0sT0FBTyxLQUFLLDJCQUEyQjtHQUM3QztFQUNKO0VBRUEsTUFBTSxTQUFTLE9BQU8sY0FBYyxFQUFFLFNBQVMsTUFBTTtFQUNyRCxJQUFJLFdBQVcsT0FBTztHQUNsQixNQUFNLE9BQU8sS0FBSyx1QkFBdUIsU0FBUyxnQkFBZ0IsV0FBVyxHQUFHLEVBQUU7R0FDbEY7RUFDSjtFQUVBLE1BQU0sT0FBTyxPQUFPO0VBSXBCLE1BRGdCLFdBQVcscUJBQXFCLFFBQVEsTUFDbEQsRUFBUSxlQUFlLG9DQUFBLFFBQWUsWUFBWTtFQUd4RCxNQUFNLG9CQUFvQixJQUFJLCtDQUFBLFFBQXdCO0VBQ3RELGtCQUFrQix1QkFBdUI7RUFDekMsa0JBQWtCLDBCQUEwQjtFQUM1QyxrQkFBa0IsYUFBYTtFQUMvQixrQkFBa0IsZ0JBQWdCO0VBQ2xDLE1BQU0sV0FBVyxlQUFlLG1CQUFtQixJQUFJO0NBQzNEO0FBQ0oifQ==