@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
43 lines (42 loc) • 4.71 kB
JavaScript
import BaseGenerator from "../BaseGenerator.es.js";
import Chunk from "../chunk/Chunk.es.js";
//#region src/world/generators/Flat.ts
var Flat = class extends BaseGenerator {
async generateChunk(cx, cz, seed, config) {
return new Promise((resolve) => {
const chunk = new Chunk(cx, cz);
const layers = config?.layers ?? [
{
block: "bedrock",
size: 1
},
{
block: "dirt",
size: 2
},
{
block: "grass",
size: 1
}
];
const blocks = [];
layers.forEach((layer) => {
let block;
try {
if (!layer.block.startsWith("minecraft:")) block = this.getBlockManager().getBlock(`minecraft:${layer.block}`);
else block = this.getBlockManager().getBlock(layer.block);
} catch {
block = this.getBlockManager().getBlock("minecraft:air");
}
for (let c = 1; c <= layer.size; c++) blocks.push(block);
});
for (let x = 0; x < 16; x++) for (let z = 0; z < 16; z++) blocks.forEach((block, place) => {
chunk.setBlock(x, place, z, block);
});
resolve(chunk);
});
}
};
//#endregion
export { Flat as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxhdC5lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd29ybGQvZ2VuZXJhdG9ycy9GbGF0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlR2VuZXJhdG9yIGZyb20gJy4uL0Jhc2VHZW5lcmF0b3InO1xuaW1wb3J0IHR5cGUgeyBCbG9jayB9IGZyb20gJy4uLy4uL2Jsb2NrL0Jsb2NrJztcbmltcG9ydCBDaHVuayBmcm9tICcuLi9jaHVuay9DaHVuayc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsYXQgZXh0ZW5kcyBCYXNlR2VuZXJhdG9yIHtcbiAgICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVDaHVuayhjeDogbnVtYmVyLCBjejogbnVtYmVyLCBzZWVkPzogbnVtYmVyLCBjb25maWc/OiBhbnkpOiBQcm9taXNlPENodW5rPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2h1bmsgPSBuZXcgQ2h1bmsoY3gsIGN6KTtcblxuICAgICAgICAgICAgLy8gRGVmYXVsdCBsYXllcnMgaWYgbm9uZSBpcyBwcm92aWRlZFxuICAgICAgICAgICAgY29uc3QgbGF5ZXJzID0gY29uZmlnPy5sYXllcnMgPz8gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6ICdiZWRyb2NrJyxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBibG9jazogJ2RpcnQnLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAyXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnZ3Jhc3MnLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAxXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgY29uc3QgYmxvY2tzOiBCbG9ja1tdID0gW107XG4gICAgICAgICAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBibG9jazogQmxvY2s7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXllci5ibG9jay5zdGFydHNXaXRoKCdtaW5lY3JhZnQ6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gdGhpcy5nZXRCbG9ja01hbmFnZXIoKS5nZXRCbG9jayhgbWluZWNyYWZ0OiR7bGF5ZXIuYmxvY2t9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBibG9jayA9IHRoaXMuZ2V0QmxvY2tNYW5hZ2VyKCkuZ2V0QmxvY2sobGF5ZXIuYmxvY2spO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICBibG9jayA9IHRoaXMuZ2V0QmxvY2tNYW5hZ2VyKCkuZ2V0QmxvY2soJ21pbmVjcmFmdDphaXInKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYyA9IDE7IGMgPD0gbGF5ZXIuc2l6ZTsgYysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCAxNjsgeCsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCAxNjsgeisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5mb3JFYWNoKChibG9jaywgcGxhY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rLnNldEJsb2NrKHgsIHBsYWNlLCB6LCBibG9jayk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZShjaHVuayk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsSUFBcUIsT0FBckIsY0FBa0MsY0FBYztDQUM1QyxNQUFhLGNBQWMsSUFBWSxJQUFZLE1BQWUsUUFBOEI7RUFDNUYsT0FBTyxJQUFJLFNBQVMsWUFBWTtHQUM1QixNQUFNLFFBQVEsSUFBSSxNQUFNLElBQUksRUFBRTtHQUc5QixNQUFNLFNBQVMsUUFBUSxVQUFVO0lBQzdCO0tBQ0ksT0FBTztLQUNQLE1BQU07SUFDVjtJQUNBO0tBQ0ksT0FBTztLQUNQLE1BQU07SUFDVjtJQUNBO0tBQ0ksT0FBTztLQUNQLE1BQU07SUFDVjtHQUNKO0dBRUEsTUFBTSxTQUFrQixDQUFDO0dBQ3pCLE9BQU8sU0FBUyxVQUFlO0lBQzNCLElBQUk7SUFDSixJQUFJO0tBQ0EsSUFBSSxDQUFDLE1BQU0sTUFBTSxXQUFXLFlBQVksR0FDcEMsUUFBUSxLQUFLLGdCQUFnQixFQUFFLFNBQVMsYUFBYSxNQUFNLE9BQU87VUFDL0QsUUFBUSxLQUFLLGdCQUFnQixFQUFFLFNBQVMsTUFBTSxLQUFLO0lBQzlELFFBQVE7S0FDSixRQUFRLEtBQUssZ0JBQWdCLEVBQUUsU0FBUyxlQUFlO0lBQzNEO0lBQ0EsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLE1BQU0sTUFBTSxLQUM3QixPQUFPLEtBQUssS0FBSztHQUV6QixDQUFDO0dBRUQsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksS0FDcEIsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksS0FDcEIsT0FBTyxTQUFTLE9BQU8sVUFBVTtJQUM3QixNQUFNLFNBQVMsR0FBRyxPQUFPLEdBQUcsS0FBSztHQUNyQyxDQUFDO0dBSVQsUUFBUSxLQUFLO0VBQ2pCLENBQUM7Q0FDTDtBQUNKIn0=