UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

52 lines (51 loc) 6.43 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const require_runtime = require("../_virtual/_rolldown/runtime.cjs.cjs"); let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils"); _jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1); let _jsprismarine_bedrock_data = require("@jsprismarine/bedrock-data"); _jsprismarine_bedrock_data = require_runtime.__toESM(_jsprismarine_bedrock_data, 1); let _jsprismarine_nbt = require("@jsprismarine/nbt"); let zlib = require("zlib"); //#region src/block/BlockMappings.ts /** * Class used to manage runtime Ids. */ var BlockMappings = class { static nameToRuntime = /* @__PURE__ */ new Map(); static runtimeToName = /* @__PURE__ */ new Map(); static async initMappings(server) { try { const reader = new _jsprismarine_nbt.NBTReader(new _jsprismarine_jsbinaryutils.default((0, zlib.gunzipSync)(_jsprismarine_bedrock_data.canonical_block_states)), _jsprismarine_nbt.ByteOrder.BIG_ENDIAN); for (const blockTag of reader.parseList()) { const name = blockTag.getString("name", "minecraft:air"); const runtimeId = blockTag.getNumber("runtimeId", 0); this.registerMapping(name, runtimeId); } } catch (error) { server.getLogger().error("Failed to load block mappings"); server.getLogger().error(error); } } static reset() { this.nameToRuntime.clear(); this.runtimeToName.clear(); } static registerMapping(name, runtimeId) { this.nameToRuntime.set(name, runtimeId); this.runtimeToName.set(runtimeId, name); } static getRuntimeId(name) { return name ? this.nameToRuntime.get(name) : 0; } static getLegacyId(runtimeId) { const name = this.runtimeToName.get(runtimeId); return { id: _jsprismarine_bedrock_data.block_id_map[name] & 15, meta: 0 }; } }; //#endregion exports.BlockMappings = BlockMappings; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmxvY2tNYXBwaW5ncy5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibG9jay9CbG9ja01hcHBpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTkJUVGFnQ29tcG91bmQgfSBmcm9tICdAanNwcmlzbWFyaW5lL25idCc7XG5pbXBvcnQgeyBCeXRlT3JkZXIsIE5CVFJlYWRlciB9IGZyb20gJ0Bqc3ByaXNtYXJpbmUvbmJ0JztcblxuaW1wb3J0ICogYXMgQmVkcm9ja0RhdGEgZnJvbSAnQGpzcHJpc21hcmluZS9iZWRyb2NrLWRhdGEnO1xuaW1wb3J0IEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuaW1wb3J0IHsgZ3VuemlwU3luYyB9IGZyb20gJ3psaWInO1xuaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uL1NlcnZlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5SWQge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbWV0YTogbnVtYmVyO1xufVxuXG4vKipcbiAqIENsYXNzIHVzZWQgdG8gbWFuYWdlIHJ1bnRpbWUgSWRzLlxuICovXG5leHBvcnQgY2xhc3MgQmxvY2tNYXBwaW5ncyB7XG4gICAgLy8gcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbGVnYWN5VG9SdW50aW1lSWQ6IE1hcDxudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gICAgLy8gcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgcnVudGltZUlkVG9MZWdhY3k6IE1hcDxudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG4gICAgLy8gYmxvY2sgbmFtZSAtPiBydW50aW1lSWQgKHdpbGwgbm90IHN1cHBvcnQgc3RhdGVzIGZvciBub3cgOiguLi4pXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgbmFtZVRvUnVudGltZTogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBydW50aW1lVG9OYW1lOiBNYXA8bnVtYmVyLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBpbml0TWFwcGluZ3Moc2VydmVyOiBTZXJ2ZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBCaW5hcnlTdHJlYW0oXG4gICAgICAgICAgICAgICAgZ3VuemlwU3luYyhCZWRyb2NrRGF0YS5jYW5vbmljYWxfYmxvY2tfc3RhdGVzKSAvLyBWYW5pbGxhIHN0YXRlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlcjogTkJUUmVhZGVyID0gbmV3IE5CVFJlYWRlcihzdHJlYW0sIEJ5dGVPcmRlci5CSUdfRU5ESUFOKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBibG9ja1RhZyBvZiByZWFkZXIucGFyc2VMaXN0PE5CVFRhZ0NvbXBvdW5kPigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGJsb2NrVGFnLmdldFN0cmluZygnbmFtZScsICdtaW5lY3JhZnQ6YWlyJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcnVudGltZUlkID0gYmxvY2tUYWcuZ2V0TnVtYmVyKCdydW50aW1lSWQnLCAwKTsgLy8gVE9ETzogQWlyIHJ1bnRpbWUgSURcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyTWFwcGluZyhuYW1lLCBydW50aW1lSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgICAgc2VydmVyLmdldExvZ2dlcigpLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBibG9jayBtYXBwaW5ncycpO1xuICAgICAgICAgICAgc2VydmVyLmdldExvZ2dlcigpLmVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMubmFtZVRvUnVudGltZS5jbGVhcigpO1xuICAgICAgICB0aGlzLnJ1bnRpbWVUb05hbWUuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWdpc3Rlck1hcHBpbmcobmFtZTogc3RyaW5nLCBydW50aW1lSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLm5hbWVUb1J1bnRpbWUuc2V0KG5hbWUsIHJ1bnRpbWVJZCk7XG4gICAgICAgIHRoaXMucnVudGltZVRvTmFtZS5zZXQocnVudGltZUlkLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJ1bnRpbWVJZChuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIG5hbWUgPyB0aGlzLm5hbWVUb1J1bnRpbWUuZ2V0KG5hbWUpISA6IDA7IC8vIFRPRE86IEFpciBydW50aW1lIElEXG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRMZWdhY3lJZChydW50aW1lSWQ6IG51bWJlcik6IExlZ2FjeUlkIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMucnVudGltZVRvTmFtZS5nZXQocnVudGltZUlkKSE7XG4gICAgICAgIGNvbnN0IGxlZ2FjeUlkID0gKEJlZHJvY2tEYXRhIGFzIGFueSkuYmxvY2tfaWRfbWFwW25hbWVdIGFzIG51bWJlcjtcbiAgICAgICAgLy8gVE9ETzogcHJvcGVyIG1ldGFcbiAgICAgICAgcmV0dXJuIDxMZWdhY3lJZD57IGlkOiBsZWdhY3lJZCAmIDB4ZiwgbWV0YTogMCB9O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWdCQSxJQUFhLGdCQUFiLE1BQTJCO0NBSXZCLE9BQXdCLGdDQUFxQyxJQUFJLElBQUk7Q0FDckUsT0FBd0IsZ0NBQXFDLElBQUksSUFBSTtDQUVyRSxhQUFvQixhQUFhLFFBQWdCO0VBQzdDLElBQUk7R0FJQSxNQUFNLFNBQW9CLElBQUksa0JBQUEsVUFBVSxJQUhyQiw0QkFBQSxTQUFBLEdBQUEsS0FBQSxZQUNKLDJCQUFZLHNCQUFzQixDQUVULEdBQVEsa0JBQUEsVUFBVSxVQUFVO0dBRXBFLEtBQUssTUFBTSxZQUFZLE9BQU8sVUFBMEIsR0FBRztJQUN2RCxNQUFNLE9BQU8sU0FBUyxVQUFVLFFBQVEsZUFBZTtJQUN2RCxNQUFNLFlBQVksU0FBUyxVQUFVLGFBQWEsQ0FBQztJQUNuRCxLQUFLLGdCQUFnQixNQUFNLFNBQVM7R0FDeEM7RUFDSixTQUFTLE9BQWdCO0dBQ3JCLE9BQU8sVUFBVSxFQUFFLE1BQU0sK0JBQStCO0dBQ3hELE9BQU8sVUFBVSxFQUFFLE1BQU0sS0FBSztFQUNsQztDQUNKO0NBRUEsT0FBYyxRQUFRO0VBQ2xCLEtBQUssY0FBYyxNQUFNO0VBQ3pCLEtBQUssY0FBYyxNQUFNO0NBQzdCO0NBRUEsT0FBZSxnQkFBZ0IsTUFBYyxXQUF5QjtFQUNsRSxLQUFLLGNBQWMsSUFBSSxNQUFNLFNBQVM7RUFDdEMsS0FBSyxjQUFjLElBQUksV0FBVyxJQUFJO0NBQzFDO0NBRUEsT0FBYyxhQUFhLE1BQXlDO0VBQ2hFLE9BQU8sT0FBTyxLQUFLLGNBQWMsSUFBSSxJQUFJLElBQUs7Q0FDbEQ7Q0FFQSxPQUFjLFlBQVksV0FBNkI7RUFDbkQsTUFBTSxPQUFPLEtBQUssY0FBYyxJQUFJLFNBQVM7RUFHN0MsT0FBaUI7R0FBRSxJQUZELDJCQUFvQixhQUFhLFFBRWpCO0dBQUssTUFBTTtFQUFFO0NBQ25EO0FBQ0oifQ==