UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

46 lines (45 loc) 5.22 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs.cjs"); const require_world_chunk_Chunk = require("../../chunk/Chunk.cjs.cjs"); const require_world_providers_BaseProvider = require("../BaseProvider.cjs.cjs"); let node_fs = require("node:fs"); node_fs = require_runtime.__toESM(node_fs, 1); let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils"); _jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1); let node_path = require("node:path"); node_path = require_runtime.__toESM(node_path, 1); //#region src/world/providers/filesystem/Filesystem.ts var Filesystem = class extends require_world_providers_BaseProvider.default { constructor(folderPath, server) { super(folderPath, server); if (!node_fs.default.existsSync(node_path.default.join(this.getPath(), "chunks"))) node_fs.default.mkdirSync(node_path.default.join(this.getPath(), "chunks")); } async readChunk(cx, cz, seed, generator, config) { try { const buffer = Buffer.from(await node_fs.default.promises.readFile(node_path.default.join(this.getPath(), "chunks", `${cx}_${cz}.dat`), { flag: "r", encoding: "utf-8" })); return require_world_chunk_Chunk.default.networkDeserialize(new _jsprismarine_jsbinaryutils.default(buffer), cx, cz); } catch { return generator.generateChunk(cx, cz, seed, config); } } /** * @TODO: format version, entities etc. */ async writeChunk(chunk) { await node_fs.default.promises.writeFile(node_path.default.join(this.getPath(), "chunks", `${chunk.getX()}_${chunk.getZ()}.dat`), chunk.networkSerialize(), { flag: "w+", encoding: "utf-8", flush: true }); } }; //#endregion exports.default = Filesystem; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZXN5c3RlbS5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JsZC9wcm92aWRlcnMvZmlsZXN5c3RlbS9GaWxlc3lzdGVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSBTZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vU2VydmVyJztcbmltcG9ydCB0eXBlIHsgR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vR2VuZXJhdG9yJztcbmltcG9ydCBDaHVuayBmcm9tICcuLi8uLi9jaHVuay9DaHVuayc7XG5pbXBvcnQgQmFzZVByb3ZpZGVyIGZyb20gJy4uL0Jhc2VQcm92aWRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVzeXN0ZW0gZXh0ZW5kcyBCYXNlUHJvdmlkZXIge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb2xkZXJQYXRoOiBzdHJpbmcsIHNlcnZlcjogU2VydmVyKSB7XG4gICAgICAgIHN1cGVyKGZvbGRlclBhdGgsIHNlcnZlcik7XG5cbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBhdGguam9pbih0aGlzLmdldFBhdGgoKSwgJ2NodW5rcycpKSkgZnMubWtkaXJTeW5jKHBhdGguam9pbih0aGlzLmdldFBhdGgoKSwgJ2NodW5rcycpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZENodW5rKGN4OiBudW1iZXIsIGN6OiBudW1iZXIsIHNlZWQ6IG51bWJlciwgZ2VuZXJhdG9yOiBHZW5lcmF0b3IsIGNvbmZpZz86IGFueSk6IFByb21pc2U8Q2h1bms+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKHBhdGguam9pbih0aGlzLmdldFBhdGgoKSwgJ2NodW5rcycsIGAke2N4fV8ke2N6fS5kYXRgKSwge1xuICAgICAgICAgICAgICAgICAgICBmbGFnOiAncicsXG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiAndXRmLTgnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiBDaHVuay5uZXR3b3JrRGVzZXJpYWxpemUobmV3IEJpbmFyeVN0cmVhbShidWZmZXIpLCBjeCwgY3opO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZ2VuZXJhdGVDaHVuayhjeCwgY3osIHNlZWQsIGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAVE9ETzogZm9ybWF0IHZlcnNpb24sIGVudGl0aWVzIGV0Yy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgd3JpdGVDaHVuayhjaHVuazogQ2h1bmspOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBmYWlsdXJlcy5cbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKFxuICAgICAgICAgICAgcGF0aC5qb2luKHRoaXMuZ2V0UGF0aCgpLCAnY2h1bmtzJywgYCR7Y2h1bmsuZ2V0WCgpfV8ke2NodW5rLmdldFooKX0uZGF0YCksXG4gICAgICAgICAgICBjaHVuay5uZXR3b3JrU2VyaWFsaXplKCksXG4gICAgICAgICAgICB7IGZsYWc6ICd3KycsIGVuY29kaW5nOiAndXRmLTgnLCBmbHVzaDogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFRQSxJQUFxQixhQUFyQixjQUF3QyxxQ0FBQSxRQUFhO0NBQ2pELFlBQW1CLFlBQW9CLFFBQWdCO0VBQ25ELE1BQU0sWUFBWSxNQUFNO0VBRXhCLElBQUksQ0FBQyxRQUFBLFFBQUcsV0FBVyxVQUFBLFFBQUssS0FBSyxLQUFLLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxRQUFBLFFBQUcsVUFBVSxVQUFBLFFBQUssS0FBSyxLQUFLLFFBQVEsR0FBRyxRQUFRLENBQUM7Q0FDN0c7Q0FFQSxNQUFhLFVBQVUsSUFBWSxJQUFZLE1BQWMsV0FBc0IsUUFBOEI7RUFDN0csSUFBSTtHQUNBLE1BQU0sU0FBUyxPQUFPLEtBQ2xCLE1BQU0sUUFBQSxRQUFHLFNBQVMsU0FBUyxVQUFBLFFBQUssS0FBSyxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxHQUFHO0lBQy9FLE1BQU07SUFDTixVQUFVO0dBQ2QsQ0FBQyxDQUNMO0dBRUEsT0FBTywwQkFBQSxRQUFNLG1CQUFtQixJQUFJLDRCQUFBLFFBQWEsTUFBTSxHQUFHLElBQUksRUFBRTtFQUNwRSxRQUFRO0dBQ0osT0FBTyxVQUFVLGNBQWMsSUFBSSxJQUFJLE1BQU0sTUFBTTtFQUN2RDtDQUNKOzs7O0NBS0EsTUFBYSxXQUFXLE9BQTZCO0VBRWpELE1BQU0sUUFBQSxRQUFHLFNBQVMsVUFDZCxVQUFBLFFBQUssS0FBSyxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUcsTUFBTSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssRUFBRSxLQUFLLEdBQ3pFLE1BQU0saUJBQWlCLEdBQ3ZCO0dBQUUsTUFBTTtHQUFNLFVBQVU7R0FBUyxPQUFPO0VBQUssQ0FDakQ7Q0FDSjtBQUNKIn0=