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