@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
52 lines (51 loc) • 6.43 kB
JavaScript
;
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==