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