@jsprismarine/minecraft
Version:
Minecraft: Bedrock Edition data and related utilities
64 lines (63 loc) • 6.22 kB
JavaScript
import { GametypeInvalidError } from "@jsprismarine/errors";
//#region src/Gametype.ts
/**
* Gametype.
* @remarks Also known as `Gamemode`.
* @group Gametype
*/
var Gametype = /* @__PURE__ */ function(Gametype) {
Gametype[Gametype["UNDEFINED"] = -1] = "UNDEFINED";
Gametype[Gametype["SURVIVAL"] = 0] = "SURVIVAL";
Gametype[Gametype["CREATIVE"] = 1] = "CREATIVE";
Gametype[Gametype["ADVENTURE"] = 2] = "ADVENTURE";
Gametype[Gametype["DEFAULT"] = 0] = "DEFAULT";
Gametype[Gametype["SPECTATOR"] = 3] = "SPECTATOR";
Gametype[Gametype["WORLD_DEFAULT"] = 0] = "WORLD_DEFAULT";
return Gametype;
}({});
/**
* Get Gametype name.
* @param {Gametype} mode - The Gametype to get the name of.
* @returns {GametypeName} The Gametype name.
* @throws {GametypeInvalidError} Thrown if the Gametype is invalid.
* @group Gametype
* @example
* ```typescript
* const gametype = getGametypeName(Gametype.SURVIVAL);
* console.log(gametype); // 'Survival'
* ```
*/
function getGametypeName(mode) {
switch (mode) {
case 0: return "Survival";
case 1: return "Creative";
case 2: return "Adventure";
case 3: return "Spectator";
default: throw new GametypeInvalidError();
}
}
/**
* Get Gametype from name.
* @param {GametypeName | string | number} mode - The Gametype to get the ID of.
* @returns {Gametype} The Gametype ID.
* @throws {GametypeInvalidError} Thrown if the Gametype is invalid.
* @group Gametype
* @example
* ```typescript
* const gametype = getGametypeId('survival');
* console.log(gametype); // 0
* ```
*/
function getGametypeId(mode) {
const type = mode.toString().trim().toLowerCase();
switch (true) {
case type === "0" || "survival".startsWith(type): return 0;
case type === "1" || "creative".startsWith(type): return 1;
case type === "2" || "adventure".startsWith(type): return 2;
case type === "3" || "spectator".startsWith(type): return 3;
default: throw new GametypeInvalidError(mode.toString());
}
}
//#endregion
export { Gametype, getGametypeId, getGametypeName };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZXR5cGUuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL0dhbWV0eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdhbWV0eXBlSW52YWxpZEVycm9yIH0gZnJvbSAnQGpzcHJpc21hcmluZS9lcnJvcnMnO1xuXG4vKipcbiAqIEdhbWV0eXBlLlxuICogQHJlbWFya3MgQWxzbyBrbm93biBhcyBgR2FtZW1vZGVgLlxuICogQGdyb3VwIEdhbWV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIEdhbWV0eXBlIHtcbiAgICBVTkRFRklORUQgPSAtMSxcbiAgICBTVVJWSVZBTCA9IDAsXG4gICAgQ1JFQVRJVkUgPSAxLFxuICAgIEFEVkVOVFVSRSA9IDIsXG4gICAgREVGQVVMVCA9IDAsXG4gICAgU1BFQ1RBVE9SID0gMyxcbiAgICBXT1JMRF9ERUZBVUxUID0gU1VSVklWQUxcbn1cblxuLyoqXG4gKiBHYW1ldHlwZSBuYW1lLlxuICogQGdyb3VwIEdhbWV0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIEdhbWV0eXBlTmFtZSA9ICdTdXJ2aXZhbCcgfCAnQ3JlYXRpdmUnIHwgJ0FkdmVudHVyZScgfCAnU3BlY3RhdG9yJztcblxuLyoqXG4gKiBHZXQgR2FtZXR5cGUgbmFtZS5cbiAqIEBwYXJhbSB7R2FtZXR5cGV9IG1vZGUgLSBUaGUgR2FtZXR5cGUgdG8gZ2V0IHRoZSBuYW1lIG9mLlxuICogQHJldHVybnMge0dhbWV0eXBlTmFtZX0gVGhlIEdhbWV0eXBlIG5hbWUuXG4gKiBAdGhyb3dzIHtHYW1ldHlwZUludmFsaWRFcnJvcn0gVGhyb3duIGlmIHRoZSBHYW1ldHlwZSBpcyBpbnZhbGlkLlxuICogQGdyb3VwIEdhbWV0eXBlXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZ2FtZXR5cGUgPSBnZXRHYW1ldHlwZU5hbWUoR2FtZXR5cGUuU1VSVklWQUwpO1xuICogY29uc29sZS5sb2coZ2FtZXR5cGUpOyAvLyAnU3Vydml2YWwnXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdhbWV0eXBlTmFtZShtb2RlOiBHYW1ldHlwZSk6IEdhbWV0eXBlTmFtZSB7XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIGNhc2UgR2FtZXR5cGUuU1VSVklWQUw6XG4gICAgICAgICAgICByZXR1cm4gJ1N1cnZpdmFsJztcbiAgICAgICAgY2FzZSBHYW1ldHlwZS5DUkVBVElWRTpcbiAgICAgICAgICAgIHJldHVybiAnQ3JlYXRpdmUnO1xuICAgICAgICBjYXNlIEdhbWV0eXBlLkFEVkVOVFVSRTpcbiAgICAgICAgICAgIHJldHVybiAnQWR2ZW50dXJlJztcbiAgICAgICAgY2FzZSBHYW1ldHlwZS5TUEVDVEFUT1I6XG4gICAgICAgICAgICByZXR1cm4gJ1NwZWN0YXRvcic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgR2FtZXR5cGVJbnZhbGlkRXJyb3IoKTtcbiAgICB9XG59XG5cbi8qKlxuICogR2V0IEdhbWV0eXBlIGZyb20gbmFtZS5cbiAqIEBwYXJhbSB7R2FtZXR5cGVOYW1lIHwgc3RyaW5nIHwgbnVtYmVyfSBtb2RlIC0gVGhlIEdhbWV0eXBlIHRvIGdldCB0aGUgSUQgb2YuXG4gKiBAcmV0dXJucyB7R2FtZXR5cGV9IFRoZSBHYW1ldHlwZSBJRC5cbiAqIEB0aHJvd3Mge0dhbWV0eXBlSW52YWxpZEVycm9yfSBUaHJvd24gaWYgdGhlIEdhbWV0eXBlIGlzIGludmFsaWQuXG4gKiBAZ3JvdXAgR2FtZXR5cGVcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBnYW1ldHlwZSA9IGdldEdhbWV0eXBlSWQoJ3N1cnZpdmFsJyk7XG4gKiBjb25zb2xlLmxvZyhnYW1ldHlwZSk7IC8vIDBcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2FtZXR5cGVJZChtb2RlOiBHYW1ldHlwZU5hbWUgfCBzdHJpbmcgfCBudW1iZXIpOiBHYW1ldHlwZSB7XG4gICAgY29uc3QgdHlwZSA9IG1vZGUudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICBjYXNlIHR5cGUgPT09ICcwJyB8fCAnc3Vydml2YWwnLnN0YXJ0c1dpdGgodHlwZSk6XG4gICAgICAgICAgICByZXR1cm4gR2FtZXR5cGUuU1VSVklWQUw7XG4gICAgICAgIGNhc2UgdHlwZSA9PT0gJzEnIHx8ICdjcmVhdGl2ZScuc3RhcnRzV2l0aCh0eXBlKTpcbiAgICAgICAgICAgIHJldHVybiBHYW1ldHlwZS5DUkVBVElWRTtcbiAgICAgICAgY2FzZSB0eXBlID09PSAnMicgfHwgJ2FkdmVudHVyZScuc3RhcnRzV2l0aCh0eXBlKTpcbiAgICAgICAgICAgIHJldHVybiBHYW1ldHlwZS5BRFZFTlRVUkU7XG4gICAgICAgIGNhc2UgdHlwZSA9PT0gJzMnIHx8ICdzcGVjdGF0b3InLnN0YXJ0c1dpdGgodHlwZSk6XG4gICAgICAgICAgICByZXR1cm4gR2FtZXR5cGUuU1BFQ1RBVE9SO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEdhbWV0eXBlSW52YWxpZEVycm9yKG1vZGUudG9TdHJpbmcoKSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBT0EsSUFBWSxXQUFMLHlCQUFBLFVBQUE7Q0FDSCxTQUFBLFNBQUEsZUFBQSxNQUFBO0NBQ0EsU0FBQSxTQUFBLGNBQUEsS0FBQTtDQUNBLFNBQUEsU0FBQSxjQUFBLEtBQUE7Q0FDQSxTQUFBLFNBQUEsZUFBQSxLQUFBO0NBQ0EsU0FBQSxTQUFBLGFBQUEsS0FBQTtDQUNBLFNBQUEsU0FBQSxlQUFBLEtBQUE7Q0FDQSxTQUFBLFNBQUEsbUJBQUEsS0FBQTs7QUFDSixFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7OztBQW9CQSxTQUFnQixnQkFBZ0IsTUFBOEI7Q0FDMUQsUUFBUSxNQUFSO0VBQ0ksS0FBQSxHQUNJLE9BQU87RUFDWCxLQUFBLEdBQ0ksT0FBTztFQUNYLEtBQUEsR0FDSSxPQUFPO0VBQ1gsS0FBQSxHQUNJLE9BQU87RUFDWCxTQUNJLE1BQU0sSUFBSSxxQkFBcUI7Q0FDdkM7QUFDSjs7Ozs7Ozs7Ozs7OztBQWNBLFNBQWdCLGNBQWMsTUFBZ0Q7Q0FDMUUsTUFBTSxPQUFPLEtBQUssU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZO0NBRWhELFFBQVEsTUFBUjtFQUNJLEtBQUssU0FBUyxPQUFPLFdBQVcsV0FBVyxJQUFJLEdBQzNDLE9BQUE7RUFDSixLQUFLLFNBQVMsT0FBTyxXQUFXLFdBQVcsSUFBSSxHQUMzQyxPQUFBO0VBQ0osS0FBSyxTQUFTLE9BQU8sWUFBWSxXQUFXLElBQUksR0FDNUMsT0FBQTtFQUNKLEtBQUssU0FBUyxPQUFPLFlBQVksV0FBVyxJQUFJLEdBQzVDLE9BQUE7RUFDSixTQUNJLE1BQU0sSUFBSSxxQkFBcUIsS0FBSyxTQUFTLENBQUM7Q0FDdEQ7QUFDSiJ9