@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
60 lines (59 loc) • 6.14 kB
JavaScript
import assert from "node:assert";
//#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;
assert(found !== null, `Player with id ${id} cannot be found!`);
return found;
}
};
//#endregion
export { SessionManager as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Vzc2lvbk1hbmFnZXIuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1Nlc3Npb25NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnbm9kZTphc3NlcnQnO1xuaW1wb3J0IHR5cGUgUGxheWVyIGZyb20gJy4vUGxheWVyJztcbmltcG9ydCB0eXBlIENsaWVudENvbm5lY3Rpb24gZnJvbSAnLi9uZXR3b3JrL0NsaWVudENvbm5lY3Rpb24nO1xuaW1wb3J0IHR5cGUgeyBQbGF5ZXJMaXN0RW50cnkgfSBmcm9tICcuL25ldHdvcmsvcGFja2V0L1BsYXllckxpc3RQYWNrZXQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uTWFuYWdlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0aW9uczogTWFwPHN0cmluZywgQ2xpZW50Q29ubmVjdGlvbj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF5ZXJMaXN0OiBNYXA8c3RyaW5nLCBQbGF5ZXJMaXN0RW50cnk+ID0gbmV3IE1hcCgpO1xuXG4gICAgcHVibGljIGFkZCh0b2tlbjogc3RyaW5nLCBjb25uZWN0aW9uOiBDbGllbnRDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KHRva2VuLCBjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzKHRva2VuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuaGFzKHRva2VuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHRva2VuOiBzdHJpbmcpOiBDbGllbnRDb25uZWN0aW9uIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zLmdldCh0b2tlbikgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlKHRva2VuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuZGVsZXRlKHRva2VuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGxheWVyTGlzdCgpOiBNYXA8c3RyaW5nLCBQbGF5ZXJMaXN0RW50cnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheWVyTGlzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWxsUGxheWVycygpOiBQbGF5ZXJbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpXG4gICAgICAgICAgICAubWFwKChjb25uKSA9PiBjb25uLmdldFBsYXllclNlc3Npb24oKT8uZ2V0UGxheWVyKCkhKVxuICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwKSBhcyBQbGF5ZXJbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBLaWNrIGFsbCBwbGF5ZXJzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBUaGUgcmVhc29uIHRvIGtpY2sgdGhlIHBsYXllcnMuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGtpY2tBbGxQbGF5ZXJzKHJlYXNvbjogc3RyaW5nKSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZ2V0QWxsUGxheWVycygpLm1hcCgocGxheWVyKSA9PiBwbGF5ZXIua2ljayhyZWFzb24pKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRQbGF5ZXIoeyBuYW1lLCB4dWlkIH06IHsgbmFtZT86IHN0cmluZzsgeHVpZD86IHN0cmluZyB9KTogUGxheWVyIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFsbFBsYXllcnMoKS5maW5kKChwKSA9PiBwLmdldE5hbWUoKSA9PT0gbmFtZSB8fCBwLmdldFhVSUQoKSA9PT0geHVpZCkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBKdXN0IGEgY29tcGF0aWJpbGl0eSBsYXllciB0byBub3QgYnJlYWsgZXZlcnl0aGluZyBmb3Igbm93XG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBwYXJhbSBuYW1lXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGxheWVyQnlFeGFjdE5hbWUobmFtZTogc3RyaW5nKTogUGxheWVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5nZXRBbGxQbGF5ZXJzKCkuZmluZCgocCkgPT4gcC5nZXROYW1lKCkgPT09IG5hbWUpID8/IG51bGw7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBKdXN0IGEgY29tcGF0aWJpbGl0eSBsYXllciB0byBub3QgYnJlYWsgZXZlcnl0aGluZyBmb3Igbm93XG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHVibGljIGdldFBsYXllckJ5SWQoaWQ6IGJpZ2ludCk6IFBsYXllciB8IG51bGwge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZ2V0QWxsUGxheWVycygpLmZpbmQoKHApID0+IHAuZ2V0UnVudGltZUlkKCkgPT09IGlkKSA/PyBudWxsO1xuICAgICAgICBhc3NlcnQoZm91bmQgIT09IG51bGwsIGBQbGF5ZXIgd2l0aCBpZCAke2lkfSBjYW5ub3QgYmUgZm91bmQhYCk7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBS0EsSUFBcUIsaUJBQXJCLE1BQW9DO0NBQ2hDLDhCQUE4RCxJQUFJLElBQUk7Q0FDdEUsNkJBQTRELElBQUksSUFBSTtDQUVwRSxJQUFXLE9BQWUsWUFBb0M7RUFDMUQsS0FBSyxZQUFZLElBQUksT0FBTyxVQUFVO0NBQzFDO0NBRUEsSUFBVyxPQUF3QjtFQUMvQixPQUFPLEtBQUssWUFBWSxJQUFJLEtBQUs7Q0FDckM7Q0FFQSxJQUFXLE9BQXdDO0VBQy9DLE9BQU8sS0FBSyxZQUFZLElBQUksS0FBSyxLQUFLO0NBQzFDO0NBRUEsT0FBYyxPQUF3QjtFQUNsQyxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUs7Q0FDeEM7Q0FFQSxnQkFBcUQ7RUFDakQsT0FBTyxLQUFLO0NBQ2hCO0NBRUEsZ0JBQWlDO0VBQzdCLE9BQU8sTUFBTSxLQUFLLEtBQUssWUFBWSxPQUFPLENBQUMsRUFDdEMsS0FBSyxTQUFTLEtBQUssaUJBQWlCLEdBQUcsVUFBVSxDQUFFLEVBQ25ELFFBQVEsTUFBVyxDQUFDO0NBQzdCOzs7OztDQU1BLE1BQWEsZUFBZSxRQUFnQjtFQUN4QyxNQUFNLFFBQVEsSUFBSSxLQUFLLGNBQWMsRUFBRSxLQUFLLFdBQVcsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0NBQy9FO0NBRUEsV0FBa0IsRUFBRSxNQUFNLFFBQXlEO0VBQy9FLE9BQU8sS0FBSyxjQUFjLEVBQUUsTUFBTSxNQUFNLEVBQUUsUUFBUSxNQUFNLFFBQVEsRUFBRSxRQUFRLE1BQU0sSUFBSSxLQUFLO0NBQzdGOzs7Ozs7OztDQVNBLHFCQUE0QixNQUE2QjtFQUVyRCxPQURjLEtBQUssY0FBYyxFQUFFLE1BQU0sTUFBTSxFQUFFLFFBQVEsTUFBTSxJQUFJLEtBQUs7Q0FFNUU7Ozs7Ozs7O0NBU0EsY0FBcUIsSUFBMkI7RUFDNUMsTUFBTSxRQUFRLEtBQUssY0FBYyxFQUFFLE1BQU0sTUFBTSxFQUFFLGFBQWEsTUFBTSxFQUFFLEtBQUs7RUFDM0UsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCO0VBQzlELE9BQU87Q0FDWDtBQUNKIn0=