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