UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

39 lines (38 loc) 4.03 kB
import BaseProvider from "../BaseProvider.es.js"; import fs from "node:fs"; import path from "node:path"; //#region src/world/providers/anvil/Anvil.ts var DEFAULT_FOLDERS = [ "data", "entities", "playerdata", "region" ]; var Anvil = class 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) {} }; //#endregion export { Anvil as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW52aWwuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmxkL3Byb3ZpZGVycy9hbnZpbC9BbnZpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBTZXJ2ZXIgZnJvbSAnLi4vLi4vLi4vU2VydmVyJztcbmltcG9ydCB0eXBlIHsgR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vR2VuZXJhdG9yJztcbmltcG9ydCB0eXBlIENodW5rIGZyb20gJy4uLy4uL2NodW5rL0NodW5rJztcbmltcG9ydCBCYXNlUHJvdmlkZXIgZnJvbSAnLi4vQmFzZVByb3ZpZGVyJztcblxuaW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcblxuY29uc3QgREVGQVVMVF9GT0xERVJTID0gWydkYXRhJywgJ2VudGl0aWVzJywgJ3BsYXllcmRhdGEnLCAncmVnaW9uJ107XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFudmlsIGV4dGVuZHMgQmFzZVByb3ZpZGVyIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9sZGVyUGF0aDogc3RyaW5nLCBzZXJ2ZXI6IFNlcnZlcikge1xuICAgICAgICBzdXBlcihmb2xkZXJQYXRoLCBzZXJ2ZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcHJlcGFyZUZvbGRlclN0cnVjdHVyZSgpIHtcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMucGF0aCkpIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKHRoaXMucGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgIERFRkFVTFRfRk9MREVSUy5tYXAoKGRpcikgPT4gcGF0aC5qb2luKHRoaXMucGF0aCwgZGlyKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChkaXIpID0+ICFmcy5leGlzdHNTeW5jKGRpcikpXG4gICAgICAgICAgICAgICAgLm1hcCgoZGlyKSA9PiBmcy5wcm9taXNlcy5ta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGVuYWJsZSBob29rLlxuICAgICAqIEBncm91cCBMaWZlY3ljbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZW5hYmxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVGb2xkZXJTdHJ1Y3R1cmUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogT24gZGlzYWJsZSBob29rLlxuICAgICAqIEBncm91cCBMaWZlY3ljbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZGlzYWJsZSgpOiBQcm9taXNlPHZvaWQ+IHt9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZENodW5rKGN4OiBudW1iZXIsIGN6OiBudW1iZXIsIHNlZWQ6IG51bWJlciwgZ2VuZXJhdG9yOiBHZW5lcmF0b3IsIGNvbmZpZz86IGFueSk6IFByb21pc2U8Q2h1bms+IHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5nZW5lcmF0ZUNodW5rKGN4LCBjeiwgc2VlZCwgY29uZmlnKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIHdyaXRlQ2h1bmsoX2NodW5rOiBDaHVuayk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBUT0RPLlxuICAgICAgICByZXR1cm47XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBUUEsSUFBTSxrQkFBa0I7Q0FBQztDQUFRO0NBQVk7Q0FBYztBQUFRO0FBRW5FLElBQXFCLFFBQXJCLGNBQW1DLGFBQWE7Q0FDNUMsWUFBbUIsWUFBb0IsUUFBZ0I7RUFDbkQsTUFBTSxZQUFZLE1BQU07Q0FDNUI7Q0FFQSxNQUFjLHlCQUF5QjtFQUNuQyxJQUFJLENBQUMsR0FBRyxXQUFXLEtBQUssSUFBSSxHQUN4QixNQUFNLEdBQUcsU0FBUyxNQUFNLEtBQUssTUFBTSxFQUFFLFdBQVcsS0FBSyxDQUFDO0VBRzFELE1BQU0sUUFBUSxJQUNWLGdCQUFnQixLQUFLLFFBQVEsS0FBSyxLQUFLLEtBQUssTUFBTSxHQUFHLENBQUMsRUFDakQsUUFBUSxRQUFRLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxFQUNuQyxLQUFLLFFBQVEsR0FBRyxTQUFTLE1BQU0sS0FBSyxFQUFFLFdBQVcsS0FBSyxDQUFDLENBQUMsQ0FDakU7Q0FDSjs7Ozs7Q0FNQSxNQUFhLFNBQXdCO0VBQ2pDLE1BQU0sS0FBSyx1QkFBdUI7Q0FDdEM7Ozs7O0NBS0EsTUFBYSxVQUF5QixDQUFDO0NBRXZDLE1BQWEsVUFBVSxJQUFZLElBQVksTUFBYyxXQUFzQixRQUE4QjtFQUM3RyxPQUFPLFVBQVUsY0FBYyxJQUFJLElBQUksTUFBTSxNQUFNO0NBQ3ZEO0NBQ0EsTUFBYSxXQUFXLFFBQThCLENBR3REO0FBQ0oifQ==