@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
50 lines (47 loc) • 5.7 kB
JavaScript
import BaseGenerator from '../BaseGenerator.es.js';
import Chunk from '../chunk/Chunk.es.js';
class Flat 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);
});
}
}
export { Flat as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxhdC5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dvcmxkL2dlbmVyYXRvcnMvRmxhdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUdlbmVyYXRvciBmcm9tICcuLi9CYXNlR2VuZXJhdG9yJztcbmltcG9ydCB0eXBlIHsgQmxvY2sgfSBmcm9tICcuLi8uLi9ibG9jay9CbG9jayc7XG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vY2h1bmsvQ2h1bmsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGbGF0IGV4dGVuZHMgQmFzZUdlbmVyYXRvciB7XG4gICAgcHVibGljIGFzeW5jIGdlbmVyYXRlQ2h1bmsoY3g6IG51bWJlciwgY3o6IG51bWJlciwgc2VlZD86IG51bWJlciwgY29uZmlnPzogYW55KTogUHJvbWlzZTxDaHVuaz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rID0gbmV3IENodW5rKGN4LCBjeik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgbGF5ZXJzIGlmIG5vbmUgaXMgcHJvdmlkZWRcbiAgICAgICAgICAgIGNvbnN0IGxheWVycyA9IGNvbmZpZz8ubGF5ZXJzID8/IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnYmVkcm9jaycsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2s6ICdkaXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBibG9jazogJ2dyYXNzJyxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2NrczogQmxvY2tbXSA9IFtdO1xuICAgICAgICAgICAgbGF5ZXJzLmZvckVhY2goKGxheWVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYmxvY2s6IEJsb2NrO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbGF5ZXIuYmxvY2suc3RhcnRzV2l0aCgnbWluZWNyYWZ0OicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jayA9IHRoaXMuZ2V0QmxvY2tNYW5hZ2VyKCkuZ2V0QmxvY2soYG1pbmVjcmFmdDoke2xheWVyLmJsb2NrfWApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgYmxvY2sgPSB0aGlzLmdldEJsb2NrTWFuYWdlcigpLmdldEJsb2NrKGxheWVyLmJsb2NrKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSB0aGlzLmdldEJsb2NrTWFuYWdlcigpLmdldEJsb2NrKCdtaW5lY3JhZnQ6YWlyJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGMgPSAxOyBjIDw9IGxheWVyLnNpemU7IGMrKykge1xuICAgICAgICAgICAgICAgICAgICBibG9ja3MucHVzaChibG9jayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgMTY7IHgrKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgMTY7IHorKykge1xuICAgICAgICAgICAgICAgICAgICBibG9ja3MuZm9yRWFjaCgoYmxvY2ssIHBsYWNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaHVuay5zZXRCbG9jayh4LCBwbGFjZSwgeiwgYmxvY2spO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUoY2h1bmspO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBcUIsYUFBYSxhQUFjLENBQUE7QUFBQSxFQUM1QyxNQUFhLGFBQUEsQ0FBYyxFQUFZLEVBQUEsRUFBQSxFQUFZLE1BQWUsTUFBOEIsRUFBQTtBQUM1RixJQUFPLE9BQUEsSUFBSSxPQUFRLENBQUEsQ0FBQyxPQUFZLEtBQUE7QUFDNUIsTUFBQSxNQUFNLEtBQVEsR0FBQSxJQUFJLEtBQU0sQ0FBQSxFQUFBLEVBQUksRUFBRSxDQUFBO0FBRzlCLE1BQU0sTUFBQSxNQUFBLEdBQVMsUUFBUSxNQUFVLElBQUE7QUFBQSxRQUM3QjtBQUFBLFVBQ0ksS0FBTyxFQUFBLFNBQUE7QUFBQSxVQUNQLElBQU0sRUFBQTtBQUFBLFNBQ1Y7QUFBQSxRQUNBO0FBQUEsVUFDSSxLQUFPLEVBQUEsTUFBQTtBQUFBLFVBQ1AsSUFBTSxFQUFBO0FBQUEsU0FDVjtBQUFBLFFBQ0E7QUFBQSxVQUNJLEtBQU8sRUFBQSxPQUFBO0FBQUEsVUFDUCxJQUFNLEVBQUE7QUFBQTtBQUNWLE9BQ0o7QUFFQSxNQUFBLE1BQU0sU0FBa0IsRUFBQztBQUN6QixNQUFPLE1BQUEsQ0FBQSxPQUFBLENBQVEsQ0FBQyxLQUFlLEtBQUE7QUFDM0IsUUFBSSxJQUFBLEtBQUE7QUFDSixRQUFJLElBQUE7QUFDQSxVQUFBLElBQUksQ0FBQyxLQUFBLENBQU0sS0FBTSxDQUFBLFVBQUEsQ0FBVyxZQUFZLENBQUcsRUFBQTtBQUN2QyxZQUFBLEtBQUEsR0FBUSxLQUFLLGVBQWdCLEVBQUEsQ0FBRSxTQUFTLENBQWEsVUFBQSxFQUFBLEtBQUEsQ0FBTSxLQUFLLENBQUUsQ0FBQSxDQUFBO0FBQUEsaUJBQ3ZELEtBQUEsR0FBQSxJQUFBLENBQUssaUJBQWtCLENBQUEsUUFBQSxDQUFTLE1BQU0sS0FBSyxDQUFBO0FBQUEsU0FDdEQsQ0FBQSxNQUFBO0FBQ0osVUFBQSxLQUFBLEdBQVEsSUFBSyxDQUFBLGVBQUEsRUFBa0IsQ0FBQSxRQUFBLENBQVMsZUFBZSxDQUFBO0FBQUE7QUFFM0QsUUFBQSxLQUFBLElBQVMsQ0FBSSxHQUFBLENBQUEsRUFBRyxDQUFLLElBQUEsS0FBQSxDQUFNLE1BQU0sQ0FBSyxFQUFBLEVBQUE7QUFDbEMsVUFBQSxNQUFBLENBQU8sS0FBSyxLQUFLLENBQUE7QUFBQTtBQUNyQixPQUNILENBQUE7QUFFRCxNQUFBLEtBQUEsSUFBUyxDQUFJLEdBQUEsQ0FBQSxFQUFHLENBQUksR0FBQSxFQUFBLEVBQUksQ0FBSyxFQUFBLEVBQUE7QUFDekIsUUFBQSxLQUFBLElBQVMsQ0FBSSxHQUFBLENBQUEsRUFBRyxDQUFJLEdBQUEsRUFBQSxFQUFJLENBQUssRUFBQSxFQUFBO0FBQ3pCLFVBQU8sTUFBQSxDQUFBLE9BQUEsQ0FBUSxDQUFDLEtBQUEsRUFBTyxLQUFVLEtBQUE7QUFDN0IsWUFBQSxLQUFBLENBQU0sUUFBUyxDQUFBLENBQUEsRUFBRyxLQUFPLEVBQUEsQ0FBQSxFQUFHLEtBQUssQ0FBQTtBQUFBLFdBQ3BDLENBQUE7QUFBQTtBQUNMO0FBR0osTUFBQSxPQUFBLENBQVEsS0FBSyxDQUFBO0FBQUEsS0FDaEIsQ0FBQTtBQUFBO0FBRVQ7Ozs7In0=