@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
41 lines (38 loc) • 4.58 kB
JavaScript
import BaseProvider from '../BaseProvider.es.js';
import fs from 'node:fs';
import path from 'node:path';
const DEFAULT_FOLDERS = ["data", "entities", "playerdata", "region"];
class Anvil extends BaseProvider {
constructor(folderPath, server) {
super(folderPath, server);
}
async prepareFolderStructure() {
if (!fs.existsSync(this.path)) {
await fs.promises.mkdir(this.path, { recursive: true });
}
await Promise.all(
DEFAULT_FOLDERS.map((dir) => path.join(this.path, dir)).filter((dir) => !fs.existsSync(dir)).map((dir) => fs.promises.mkdir(dir, { recursive: true }))
);
}
/**
* On enable hook.
* @group Lifecycle
*/
async enable() {
await this.prepareFolderStructure();
}
/**
* On disable hook.
* @group Lifecycle
*/
async disable() {
}
async readChunk(cx, cz, seed, generator, config) {
return generator.generateChunk(cx, cz, seed, config);
}
async writeChunk(_chunk) {
return;
}
}
export { Anvil as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW52aWwuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JsZC9wcm92aWRlcnMvYW52aWwvQW52aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uLy4uLy4uL1NlcnZlcic7XG5pbXBvcnQgdHlwZSB7IEdlbmVyYXRvciB9IGZyb20gJy4uLy4uL0dlbmVyYXRvcic7XG5pbXBvcnQgdHlwZSBDaHVuayBmcm9tICcuLi8uLi9jaHVuay9DaHVuayc7XG5pbXBvcnQgQmFzZVByb3ZpZGVyIGZyb20gJy4uL0Jhc2VQcm92aWRlcic7XG5cbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmNvbnN0IERFRkFVTFRfRk9MREVSUyA9IFsnZGF0YScsICdlbnRpdGllcycsICdwbGF5ZXJkYXRhJywgJ3JlZ2lvbiddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbnZpbCBleHRlbmRzIEJhc2VQcm92aWRlciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZvbGRlclBhdGg6IHN0cmluZywgc2VydmVyOiBTZXJ2ZXIpIHtcbiAgICAgICAgc3VwZXIoZm9sZGVyUGF0aCwgc2VydmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHByZXBhcmVGb2xkZXJTdHJ1Y3R1cmUoKSB7XG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnBhdGgpKSB7XG4gICAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcih0aGlzLnBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBERUZBVUxUX0ZPTERFUlMubWFwKChkaXIpID0+IHBhdGguam9pbih0aGlzLnBhdGgsIGRpcikpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoZGlyKSA9PiAhZnMuZXhpc3RzU3luYyhkaXIpKVxuICAgICAgICAgICAgICAgIC5tYXAoKGRpcikgPT4gZnMucHJvbWlzZXMubWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBlbmFibGUgaG9vay5cbiAgICAgKiBAZ3JvdXAgTGlmZWN5Y2xlXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGVuYWJsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlRm9sZGVyU3RydWN0dXJlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE9uIGRpc2FibGUgaG9vay5cbiAgICAgKiBAZ3JvdXAgTGlmZWN5Y2xlXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGRpc2FibGUoKTogUHJvbWlzZTx2b2lkPiB7fVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWRDaHVuayhjeDogbnVtYmVyLCBjejogbnVtYmVyLCBzZWVkOiBudW1iZXIsIGdlbmVyYXRvcjogR2VuZXJhdG9yLCBjb25maWc/OiBhbnkpOiBQcm9taXNlPENodW5rPiB7XG4gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZ2VuZXJhdGVDaHVuayhjeCwgY3osIHNlZWQsIGNvbmZpZyk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyB3cml0ZUNodW5rKF9jaHVuazogQ2h1bmspOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gVE9ETy5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBUUEsTUFBTSxlQUFrQixHQUFBLENBQUMsTUFBUSxFQUFBLFVBQUEsRUFBWSxjQUFjLFFBQVEsQ0FBQTtBQUVuRSxNQUFxQixjQUFjLFlBQWEsQ0FBQTtBQUFBLEVBQ3JDLFdBQUEsQ0FBWSxZQUFvQixNQUFnQixFQUFBO0FBQ25ELElBQUEsS0FBQSxDQUFNLFlBQVksTUFBTSxDQUFBO0FBQUE7QUFDNUIsRUFFQSxNQUFjLHNCQUF5QixHQUFBO0FBQ25DLElBQUEsSUFBSSxDQUFDLEVBQUEsQ0FBRyxVQUFXLENBQUEsSUFBQSxDQUFLLElBQUksQ0FBRyxFQUFBO0FBQzNCLE1BQU0sTUFBQSxFQUFBLENBQUcsU0FBUyxLQUFNLENBQUEsSUFBQSxDQUFLLE1BQU0sRUFBRSxTQUFBLEVBQVcsTUFBTSxDQUFBO0FBQUE7QUFHMUQsSUFBQSxNQUFNLE9BQVEsQ0FBQSxHQUFBO0FBQUEsTUFDVixlQUFnQixDQUFBLEdBQUEsQ0FBSSxDQUFDLEdBQUEsS0FBUSxJQUFLLENBQUEsSUFBQSxDQUFLLElBQUssQ0FBQSxJQUFBLEVBQU0sR0FBRyxDQUFDLENBQ2pELENBQUEsTUFBQSxDQUFPLENBQUMsR0FBUSxLQUFBLENBQUMsRUFBRyxDQUFBLFVBQUEsQ0FBVyxHQUFHLENBQUMsQ0FDbkMsQ0FBQSxHQUFBLENBQUksQ0FBQyxHQUFRLEtBQUEsRUFBQSxDQUFHLFFBQVMsQ0FBQSxLQUFBLENBQU0sR0FBSyxFQUFBLEVBQUUsU0FBVyxFQUFBLElBQUEsRUFBTSxDQUFDO0FBQUEsS0FDakU7QUFBQTtBQUNKO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNQSxNQUFhLE1BQXdCLEdBQUE7QUFDakMsSUFBQSxNQUFNLEtBQUssc0JBQXVCLEVBQUE7QUFBQTtBQUN0QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsTUFBYSxPQUF5QixHQUFBO0FBQUE7QUFBQyxFQUV2QyxNQUFhLFNBQVUsQ0FBQSxFQUFBLEVBQVksRUFBWSxFQUFBLElBQUEsRUFBYyxXQUFzQixNQUE4QixFQUFBO0FBQzdHLElBQUEsT0FBTyxTQUFVLENBQUEsYUFBQSxDQUFjLEVBQUksRUFBQSxFQUFBLEVBQUksTUFBTSxNQUFNLENBQUE7QUFBQTtBQUN2RCxFQUNBLE1BQWEsV0FBVyxNQUE4QixFQUFBO0FBRWxELElBQUE7QUFBQTtBQUVSOzs7OyJ9