UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

49 lines (42 loc) 5.78 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const BinaryStream = require('@jsprismarine/jsbinaryutils'); const fs = require('node:fs'); const path = require('node:path'); const world_chunk_Chunk = require('../../chunk/Chunk.cjs.cjs'); const world_providers_BaseProvider = require('../BaseProvider.cjs.cjs'); const _interopDefault = e => e && e.__esModule ? e : { default: e }; const BinaryStream__default = /*#__PURE__*/_interopDefault(BinaryStream); const fs__default = /*#__PURE__*/_interopDefault(fs); const path__default = /*#__PURE__*/_interopDefault(path); class Filesystem extends world_providers_BaseProvider.default { constructor(folderPath, server) { super(folderPath, server); if (!fs__default.default.existsSync(path__default.default.join(this.getPath(), "chunks"))) fs__default.default.mkdirSync(path__default.default.join(this.getPath(), "chunks")); } async readChunk(cx, cz, seed, generator, config) { try { const buffer = Buffer.from( await fs__default.default.promises.readFile(path__default.default.join(this.getPath(), "chunks", `${cx}_${cz}.dat`), { flag: "r", encoding: "utf-8" }) ); return world_chunk_Chunk.default.networkDeserialize(new BinaryStream__default.default(buffer), cx, cz); } catch { return generator.generateChunk(cx, cz, seed, config); } } /** * @TODO: format version, entities etc. */ async writeChunk(chunk) { await fs__default.default.promises.writeFile( path__default.default.join(this.getPath(), "chunks", `${chunk.getX()}_${chunk.getZ()}.dat`), chunk.networkSerialize(), { flag: "w+", encoding: "utf-8", flush: true } ); } } exports.default = Filesystem; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZXN5c3RlbS5janMuY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ybGQvcHJvdmlkZXJzL2ZpbGVzeXN0ZW0vRmlsZXN5c3RlbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uLy4uLy4uL1NlcnZlcic7XG5pbXBvcnQgdHlwZSB7IEdlbmVyYXRvciB9IGZyb20gJy4uLy4uL0dlbmVyYXRvcic7XG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vLi4vY2h1bmsvQ2h1bmsnO1xuaW1wb3J0IEJhc2VQcm92aWRlciBmcm9tICcuLi9CYXNlUHJvdmlkZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWxlc3lzdGVtIGV4dGVuZHMgQmFzZVByb3ZpZGVyIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9sZGVyUGF0aDogc3RyaW5nLCBzZXJ2ZXI6IFNlcnZlcikge1xuICAgICAgICBzdXBlcihmb2xkZXJQYXRoLCBzZXJ2ZXIpO1xuXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4odGhpcy5nZXRQYXRoKCksICdjaHVua3MnKSkpIGZzLm1rZGlyU3luYyhwYXRoLmpvaW4odGhpcy5nZXRQYXRoKCksICdjaHVua3MnKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWRDaHVuayhjeDogbnVtYmVyLCBjejogbnVtYmVyLCBzZWVkOiBudW1iZXIsIGdlbmVyYXRvcjogR2VuZXJhdG9yLCBjb25maWc/OiBhbnkpOiBQcm9taXNlPENodW5rPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShwYXRoLmpvaW4odGhpcy5nZXRQYXRoKCksICdjaHVua3MnLCBgJHtjeH1fJHtjen0uZGF0YCksIHtcbiAgICAgICAgICAgICAgICAgICAgZmxhZzogJ3InLFxuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04J1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gQ2h1bmsubmV0d29ya0Rlc2VyaWFsaXplKG5ldyBCaW5hcnlTdHJlYW0oYnVmZmVyKSwgY3gsIGN6KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmdlbmVyYXRlQ2h1bmsoY3gsIGN6LCBzZWVkLCBjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQFRPRE86IGZvcm1hdCB2ZXJzaW9uLCBlbnRpdGllcyBldGMuXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHdyaXRlQ2h1bmsoY2h1bms6IENodW5rKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgZmFpbHVyZXMuXG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShcbiAgICAgICAgICAgIHBhdGguam9pbih0aGlzLmdldFBhdGgoKSwgJ2NodW5rcycsIGAke2NodW5rLmdldFgoKX1fJHtjaHVuay5nZXRaKCl9LmRhdGApLFxuICAgICAgICAgICAgY2h1bmsubmV0d29ya1NlcmlhbGl6ZSgpLFxuICAgICAgICAgICAgeyBmbGFnOiAndysnLCBlbmNvZGluZzogJ3V0Zi04JywgZmx1c2g6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJCYXNlUHJvdmlkZXIiLCJmcyIsInBhdGgiLCJDaHVuayIsIkJpbmFyeVN0cmVhbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLE1BQXFCLG1CQUFtQkEsb0NBQWEsQ0FBQTtBQUFBLEVBQzFDLFdBQUEsQ0FBWSxZQUFvQixNQUFnQixFQUFBO0FBQ25ELElBQUEsS0FBQSxDQUFNLFlBQVksTUFBTSxDQUFBO0FBRXhCLElBQUEsSUFBSSxDQUFDQyxtQkFBRyxDQUFBLFVBQUEsQ0FBV0Msc0JBQUssSUFBSyxDQUFBLElBQUEsQ0FBSyxTQUFXLEVBQUEsUUFBUSxDQUFDLENBQUcsRUFBQUQsbUJBQUEsQ0FBRyxVQUFVQyxxQkFBSyxDQUFBLElBQUEsQ0FBSyxLQUFLLE9BQVEsRUFBQSxFQUFHLFFBQVEsQ0FBQyxDQUFBO0FBQUE7QUFDN0csRUFFQSxNQUFhLFNBQVUsQ0FBQSxFQUFBLEVBQVksRUFBWSxFQUFBLElBQUEsRUFBYyxXQUFzQixNQUE4QixFQUFBO0FBQzdHLElBQUksSUFBQTtBQUNBLE1BQUEsTUFBTSxTQUFTLE1BQU8sQ0FBQSxJQUFBO0FBQUEsUUFDbEIsTUFBTUQsbUJBQUEsQ0FBRyxRQUFTLENBQUEsUUFBQSxDQUFTQyxzQkFBSyxJQUFLLENBQUEsSUFBQSxDQUFLLE9BQVEsRUFBQSxFQUFHLFVBQVUsQ0FBRyxFQUFBLEVBQUUsQ0FBSSxDQUFBLEVBQUEsRUFBRSxNQUFNLENBQUcsRUFBQTtBQUFBLFVBQy9FLElBQU0sRUFBQSxHQUFBO0FBQUEsVUFDTixRQUFVLEVBQUE7QUFBQSxTQUNiO0FBQUEsT0FDTDtBQUVBLE1BQUEsT0FBT0MsMEJBQU0sa0JBQW1CLENBQUEsSUFBSUMsOEJBQWEsTUFBTSxDQUFBLEVBQUcsSUFBSSxFQUFFLENBQUE7QUFBQSxLQUM1RCxDQUFBLE1BQUE7QUFDSixNQUFBLE9BQU8sU0FBVSxDQUFBLGFBQUEsQ0FBYyxFQUFJLEVBQUEsRUFBQSxFQUFJLE1BQU0sTUFBTSxDQUFBO0FBQUE7QUFDdkQ7QUFDSjtBQUFBO0FBQUE7QUFBQSxFQUtBLE1BQWEsV0FBVyxLQUE2QixFQUFBO0FBRWpELElBQUEsTUFBTUgsb0JBQUcsUUFBUyxDQUFBLFNBQUE7QUFBQSxNQUNkQyxxQkFBSyxDQUFBLElBQUEsQ0FBSyxJQUFLLENBQUEsT0FBQSxJQUFXLFFBQVUsRUFBQSxDQUFBLEVBQUcsS0FBTSxDQUFBLElBQUEsRUFBTSxDQUFBLENBQUEsRUFBSSxLQUFNLENBQUEsSUFBQSxFQUFNLENBQU0sSUFBQSxDQUFBLENBQUE7QUFBQSxNQUN6RSxNQUFNLGdCQUFpQixFQUFBO0FBQUEsTUFDdkIsRUFBRSxJQUFNLEVBQUEsSUFBQSxFQUFNLFFBQVUsRUFBQSxPQUFBLEVBQVMsT0FBTyxJQUFLO0FBQUEsS0FDakQ7QUFBQTtBQUVSOzs7OyJ9