@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
67 lines (66 loc) • 6.45 kB
JavaScript
;
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_runtime = require("./_virtual/_rolldown/runtime.cjs.cjs");
let node_assert = require("node:assert");
node_assert = require_runtime.__toESM(node_assert, 1);
//#region src/SessionManager.ts
var SessionManager = class {
connections = /* @__PURE__ */ new Map();
playerList = /* @__PURE__ */ new Map();
add(token, connection) {
this.connections.set(token, connection);
}
has(token) {
return this.connections.has(token);
}
get(token) {
return this.connections.get(token) ?? null;
}
remove(token) {
return this.connections.delete(token);
}
getPlayerList() {
return this.playerList;
}
getAllPlayers() {
return Array.from(this.connections.values()).map((conn) => conn.getPlayerSession()?.getPlayer()).filter((p) => p);
}
/**
* Kick all players.
* @param {string} reason - The reason to kick the players.
*/
async kickAllPlayers(reason) {
await Promise.all(this.getAllPlayers().map((player) => player.kick(reason)));
}
findPlayer({ name, xuid }) {
return this.getAllPlayers().find((p) => p.getName() === name || p.getXUID() === xuid) ?? null;
}
/**
* Just a compatibility layer to not break everything for now
*
* @deprecated
* @param name
* @returns
*/
getPlayerByExactName(name) {
return this.getAllPlayers().find((p) => p.getName() === name) ?? null;
}
/**
* Just a compatibility layer to not break everything for now
*
* @deprecated
* @param id
* @returns
*/
getPlayerById(id) {
const found = this.getAllPlayers().find((p) => p.getRuntimeId() === id) ?? null;
(0, node_assert.default)(found !== null, `Player with id ${id} cannot be found!`);
return found;
}
};
//#endregion
exports.default = SessionManager;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Vzc2lvbk1hbmFnZXIuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvU2Vzc2lvbk1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydCc7XG5pbXBvcnQgdHlwZSBQbGF5ZXIgZnJvbSAnLi9QbGF5ZXInO1xuaW1wb3J0IHR5cGUgQ2xpZW50Q29ubmVjdGlvbiBmcm9tICcuL25ldHdvcmsvQ2xpZW50Q29ubmVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IFBsYXllckxpc3RFbnRyeSB9IGZyb20gJy4vbmV0d29yay9wYWNrZXQvUGxheWVyTGlzdFBhY2tldCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25NYW5hZ2VyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBNYXA8c3RyaW5nLCBDbGllbnRDb25uZWN0aW9uPiA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXllckxpc3Q6IE1hcDxzdHJpbmcsIFBsYXllckxpc3RFbnRyeT4gPSBuZXcgTWFwKCk7XG5cbiAgICBwdWJsaWMgYWRkKHRva2VuOiBzdHJpbmcsIGNvbm5lY3Rpb246IENsaWVudENvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZXQodG9rZW4sIGNvbm5lY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXModG9rZW46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9ucy5oYXModG9rZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodG9rZW46IHN0cmluZyk6IENsaWVudENvbm5lY3Rpb24gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuZ2V0KHRva2VuKSA/PyBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmUodG9rZW46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9ucy5kZWxldGUodG9rZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQbGF5ZXJMaXN0KCk6IE1hcDxzdHJpbmcsIFBsYXllckxpc3RFbnRyeT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5ZXJMaXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGxQbGF5ZXJzKCk6IFBsYXllcltdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSlcbiAgICAgICAgICAgIC5tYXAoKGNvbm4pID0+IGNvbm4uZ2V0UGxheWVyU2Vzc2lvbigpPy5nZXRQbGF5ZXIoKSEpXG4gICAgICAgICAgICAuZmlsdGVyKChwOiBhbnkpID0+IHApIGFzIFBsYXllcltdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEtpY2sgYWxsIHBsYXllcnMuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiAtIFRoZSByZWFzb24gdG8ga2ljayB0aGUgcGxheWVycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMga2lja0FsbFBsYXllcnMocmVhc29uOiBzdHJpbmcpIHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRBbGxQbGF5ZXJzKCkubWFwKChwbGF5ZXIpID0+IHBsYXllci5raWNrKHJlYXNvbikpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZFBsYXllcih7IG5hbWUsIHh1aWQgfTogeyBuYW1lPzogc3RyaW5nOyB4dWlkPzogc3RyaW5nIH0pOiBQbGF5ZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWxsUGxheWVycygpLmZpbmQoKHApID0+IHAuZ2V0TmFtZSgpID09PSBuYW1lIHx8IHAuZ2V0WFVJRCgpID09PSB4dWlkKSA/PyBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEp1c3QgYSBjb21wYXRpYmlsaXR5IGxheWVyIHRvIG5vdCBicmVhayBldmVyeXRoaW5nIGZvciBub3dcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHBhcmFtIG5hbWVcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQbGF5ZXJCeUV4YWN0TmFtZShuYW1lOiBzdHJpbmcpOiBQbGF5ZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmdldEFsbFBsYXllcnMoKS5maW5kKChwKSA9PiBwLmdldE5hbWUoKSA9PT0gbmFtZSkgPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEp1c3QgYSBjb21wYXRpYmlsaXR5IGxheWVyIHRvIG5vdCBicmVhayBldmVyeXRoaW5nIGZvciBub3dcbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHBhcmFtIGlkXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGxheWVyQnlJZChpZDogYmlnaW50KTogUGxheWVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5nZXRBbGxQbGF5ZXJzKCkuZmluZCgocCkgPT4gcC5nZXRSdW50aW1lSWQoKSA9PT0gaWQpID8/IG51bGw7XG4gICAgICAgIGFzc2VydChmb3VuZCAhPT0gbnVsbCwgYFBsYXllciB3aXRoIGlkICR7aWR9IGNhbm5vdCBiZSBmb3VuZCFgKTtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBS0EsSUFBcUIsaUJBQXJCLE1BQW9DO0NBQ2hDLDhCQUE4RCxJQUFJLElBQUk7Q0FDdEUsNkJBQTRELElBQUksSUFBSTtDQUVwRSxJQUFXLE9BQWUsWUFBb0M7RUFDMUQsS0FBSyxZQUFZLElBQUksT0FBTyxVQUFVO0NBQzFDO0NBRUEsSUFBVyxPQUF3QjtFQUMvQixPQUFPLEtBQUssWUFBWSxJQUFJLEtBQUs7Q0FDckM7Q0FFQSxJQUFXLE9BQXdDO0VBQy9DLE9BQU8sS0FBSyxZQUFZLElBQUksS0FBSyxLQUFLO0NBQzFDO0NBRUEsT0FBYyxPQUF3QjtFQUNsQyxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUs7Q0FDeEM7Q0FFQSxnQkFBcUQ7RUFDakQsT0FBTyxLQUFLO0NBQ2hCO0NBRUEsZ0JBQWlDO0VBQzdCLE9BQU8sTUFBTSxLQUFLLEtBQUssWUFBWSxPQUFPLENBQUMsRUFDdEMsS0FBSyxTQUFTLEtBQUssaUJBQWlCLEdBQUcsVUFBVSxDQUFFLEVBQ25ELFFBQVEsTUFBVyxDQUFDO0NBQzdCOzs7OztDQU1BLE1BQWEsZUFBZSxRQUFnQjtFQUN4QyxNQUFNLFFBQVEsSUFBSSxLQUFLLGNBQWMsRUFBRSxLQUFLLFdBQVcsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0NBQy9FO0NBRUEsV0FBa0IsRUFBRSxNQUFNLFFBQXlEO0VBQy9FLE9BQU8sS0FBSyxjQUFjLEVBQUUsTUFBTSxNQUFNLEVBQUUsUUFBUSxNQUFNLFFBQVEsRUFBRSxRQUFRLE1BQU0sSUFBSSxLQUFLO0NBQzdGOzs7Ozs7OztDQVNBLHFCQUE0QixNQUE2QjtFQUVyRCxPQURjLEtBQUssY0FBYyxFQUFFLE1BQU0sTUFBTSxFQUFFLFFBQVEsTUFBTSxJQUFJLEtBQUs7Q0FFNUU7Ozs7Ozs7O0NBU0EsY0FBcUIsSUFBMkI7RUFDNUMsTUFBTSxRQUFRLEtBQUssY0FBYyxFQUFFLE1BQU0sTUFBTSxFQUFFLGFBQWEsTUFBTSxFQUFFLEtBQUs7RUFDM0UsQ0FBQSxHQUFBLFlBQUEsU0FBTyxVQUFVLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCO0VBQzlELE9BQU87Q0FDWDtBQUNKIn0=