@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
61 lines (58 loc) • 7.12 kB
JavaScript
import assert from 'node:assert';
class SessionManager {
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) {
const found = this.getAllPlayers().find((p) => p.getName() === name) ?? null;
return found;
}
/**
* 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;
}
}
export { SessionManager as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Vzc2lvbk1hbmFnZXIuZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9TZXNzaW9uTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ25vZGU6YXNzZXJ0JztcbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuL1BsYXllcic7XG5pbXBvcnQgdHlwZSBDbGllbnRDb25uZWN0aW9uIGZyb20gJy4vbmV0d29yay9DbGllbnRDb25uZWN0aW9uJztcbmltcG9ydCB0eXBlIHsgUGxheWVyTGlzdEVudHJ5IH0gZnJvbSAnLi9uZXR3b3JrL3BhY2tldC9QbGF5ZXJMaXN0UGFja2V0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Vzc2lvbk1hbmFnZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29ubmVjdGlvbnM6IE1hcDxzdHJpbmcsIENsaWVudENvbm5lY3Rpb24+ID0gbmV3IE1hcCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxheWVyTGlzdDogTWFwPHN0cmluZywgUGxheWVyTGlzdEVudHJ5PiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBhZGQodG9rZW46IHN0cmluZywgY29ubmVjdGlvbjogQ2xpZW50Q29ubmVjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zLnNldCh0b2tlbiwgY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGhhcyh0b2tlbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zLmhhcyh0b2tlbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCh0b2tlbjogc3RyaW5nKTogQ2xpZW50Q29ubmVjdGlvbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9ucy5nZXQodG9rZW4pID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZSh0b2tlbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zLmRlbGV0ZSh0b2tlbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFBsYXllckxpc3QoKTogTWFwPHN0cmluZywgUGxheWVyTGlzdEVudHJ5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXllckxpc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbFBsYXllcnMoKTogUGxheWVyW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKVxuICAgICAgICAgICAgLm1hcCgoY29ubikgPT4gY29ubi5nZXRQbGF5ZXJTZXNzaW9uKCk/LmdldFBsYXllcigpISlcbiAgICAgICAgICAgIC5maWx0ZXIoKHA6IGFueSkgPT4gcCkgYXMgUGxheWVyW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogS2ljayBhbGwgcGxheWVycy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gVGhlIHJlYXNvbiB0byBraWNrIHRoZSBwbGF5ZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBraWNrQWxsUGxheWVycyhyZWFzb246IHN0cmluZykge1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmdldEFsbFBsYXllcnMoKS5tYXAoKHBsYXllcikgPT4gcGxheWVyLmtpY2socmVhc29uKSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kUGxheWVyKHsgbmFtZSwgeHVpZCB9OiB7IG5hbWU/OiBzdHJpbmc7IHh1aWQ/OiBzdHJpbmcgfSk6IFBsYXllciB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBbGxQbGF5ZXJzKCkuZmluZCgocCkgPT4gcC5nZXROYW1lKCkgPT09IG5hbWUgfHwgcC5nZXRYVUlEKCkgPT09IHh1aWQpID8/IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSnVzdCBhIGNvbXBhdGliaWxpdHkgbGF5ZXIgdG8gbm90IGJyZWFrIGV2ZXJ5dGhpbmcgZm9yIG5vd1xuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0gbmFtZVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHVibGljIGdldFBsYXllckJ5RXhhY3ROYW1lKG5hbWU6IHN0cmluZyk6IFBsYXllciB8IG51bGwge1xuICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZ2V0QWxsUGxheWVycygpLmZpbmQoKHApID0+IHAuZ2V0TmFtZSgpID09PSBuYW1lKSA/PyBudWxsO1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSnVzdCBhIGNvbXBhdGliaWxpdHkgbGF5ZXIgdG8gbm90IGJyZWFrIGV2ZXJ5dGhpbmcgZm9yIG5vd1xuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcGFyYW0gaWRcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQbGF5ZXJCeUlkKGlkOiBiaWdpbnQpOiBQbGF5ZXIgfCBudWxsIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmdldEFsbFBsYXllcnMoKS5maW5kKChwKSA9PiBwLmdldFJ1bnRpbWVJZCgpID09PSBpZCkgPz8gbnVsbDtcbiAgICAgICAgYXNzZXJ0KGZvdW5kICE9PSBudWxsLCBgUGxheWVyIHdpdGggaWQgJHtpZH0gY2Fubm90IGJlIGZvdW5kIWApO1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0EsTUFBcUIsY0FBZSxDQUFBO0FBQUEsRUFDZixXQUFBLHVCQUFpRCxHQUFJLEVBQUE7QUFBQSxFQUNyRCxVQUFBLHVCQUErQyxHQUFJLEVBQUE7QUFBQSxFQUU3RCxHQUFBLENBQUksT0FBZSxVQUFvQyxFQUFBO0FBQzFELElBQUssSUFBQSxDQUFBLFdBQUEsQ0FBWSxHQUFJLENBQUEsS0FBQSxFQUFPLFVBQVUsQ0FBQTtBQUFBO0FBQzFDLEVBRU8sSUFBSSxLQUF3QixFQUFBO0FBQy9CLElBQU8sT0FBQSxJQUFBLENBQUssV0FBWSxDQUFBLEdBQUEsQ0FBSSxLQUFLLENBQUE7QUFBQTtBQUNyQyxFQUVPLElBQUksS0FBd0MsRUFBQTtBQUMvQyxJQUFBLE9BQU8sSUFBSyxDQUFBLFdBQUEsQ0FBWSxHQUFJLENBQUEsS0FBSyxDQUFLLElBQUEsSUFBQTtBQUFBO0FBQzFDLEVBRU8sT0FBTyxLQUF3QixFQUFBO0FBQ2xDLElBQU8sT0FBQSxJQUFBLENBQUssV0FBWSxDQUFBLE1BQUEsQ0FBTyxLQUFLLENBQUE7QUFBQTtBQUN4QyxFQUVPLGFBQThDLEdBQUE7QUFDakQsSUFBQSxPQUFPLElBQUssQ0FBQSxVQUFBO0FBQUE7QUFDaEIsRUFFTyxhQUEwQixHQUFBO0FBQzdCLElBQUEsT0FBTyxNQUFNLElBQUssQ0FBQSxJQUFBLENBQUssWUFBWSxNQUFPLEVBQUMsRUFDdEMsR0FBSSxDQUFBLENBQUMsU0FBUyxJQUFLLENBQUEsZ0JBQUEsSUFBb0IsU0FBVSxFQUFFLEVBQ25ELE1BQU8sQ0FBQSxDQUFDLE1BQVcsQ0FBQyxDQUFBO0FBQUE7QUFDN0I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1BLE1BQWEsZUFBZSxNQUFnQixFQUFBO0FBQ3hDLElBQUEsTUFBTSxPQUFRLENBQUEsR0FBQSxDQUFJLElBQUssQ0FBQSxhQUFBLEVBQWdCLENBQUEsR0FBQSxDQUFJLENBQUMsTUFBQSxLQUFXLE1BQU8sQ0FBQSxJQUFBLENBQUssTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUFBO0FBQy9FLEVBRU8sVUFBVyxDQUFBLEVBQUUsSUFBTSxFQUFBLElBQUEsRUFBeUQsRUFBQTtBQUMvRSxJQUFBLE9BQU8sSUFBSyxDQUFBLGFBQUEsRUFBZ0IsQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFNLEtBQUEsQ0FBQSxDQUFFLE9BQVEsRUFBQSxLQUFNLElBQVEsSUFBQSxDQUFBLENBQUUsT0FBUSxFQUFBLEtBQU0sSUFBSSxDQUFLLElBQUEsSUFBQTtBQUFBO0FBQzdGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTTyxxQkFBcUIsSUFBNkIsRUFBQTtBQUNyRCxJQUFNLE1BQUEsS0FBQSxHQUFRLElBQUssQ0FBQSxhQUFBLEVBQWdCLENBQUEsSUFBQSxDQUFLLENBQUMsQ0FBQSxLQUFNLENBQUUsQ0FBQSxPQUFBLEVBQWMsS0FBQSxJQUFJLENBQUssSUFBQSxJQUFBO0FBQ3hFLElBQU8sT0FBQSxLQUFBO0FBQUE7QUFDWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sY0FBYyxFQUEyQixFQUFBO0FBQzVDLElBQU0sTUFBQSxLQUFBLEdBQVEsSUFBSyxDQUFBLGFBQUEsRUFBZ0IsQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFBLEtBQU0sQ0FBRSxDQUFBLFlBQUEsRUFBbUIsS0FBQSxFQUFFLENBQUssSUFBQSxJQUFBO0FBQzNFLElBQUEsTUFBQSxDQUFPLEtBQVUsS0FBQSxJQUFBLEVBQU0sQ0FBa0IsZUFBQSxFQUFBLEVBQUUsQ0FBbUIsaUJBQUEsQ0FBQSxDQUFBO0FBQzlELElBQU8sT0FBQSxLQUFBO0FBQUE7QUFFZjs7OzsifQ==