UNPKG

@magikcraft/mct1

Version:

Minecraft for Type 1 Diabetes

70 lines (67 loc) 2.47 kB
import { Vector3 } from '@magikcraft/mct1/vector3' import { Region } from '@magikcraft/mct1/regions' import { Schematic } from '@magikcraft/mct1/regions/schematic' import { EditCore } from '@magikcraft/mct1/regions/worldedit' import * as util from 'utils' export class Region_Schematic { /** * saveRegion * @param region - Selected region to save * @return {Schematic} - The generated region information * * Will export a schematic class based on the region that you have given */ static saveRegion(region: Region): Schematic { // Make schematic const schematic: Schematic = new Schematic(region) const startLoc: Vector3 = new Vector3( Math.min(...region.xArray()), Math.min(...region.yArray()), Math.min(...region.zArray()) ) const world = util.getWorld(schematic.region.getWorld()) for (let x = startLoc.x; x < startLoc.x + region.xLength(); x++) { for (let y = startLoc.y; y < startLoc.y + region.yLength(); y++) { for ( let z = startLoc.z; z < startLoc.z + region.zLength(); z++ ) { schematic.addBlock({ block: world.getBlockAt(x, y, z), meta: 0, // CHANGE THIS TO HAVE META DATA COMING FROM THE BLOCK! locationRelative: startLoc, }) } } } return schematic } /** * writeSchematic * @param schematic - Given schematic data (blocks, size, etc) * @param world - The world to place the schematic in. * @param location - Start location to base block placement off * * Will place a schematic block data, relative to the location vector, on the world given */ static writeSchematic( schematic: Schematic, world: string, location: Vector3, physics = false ) { const worldActual = util.getWorld(world) schematic.blocks.forEach(block => { EditCore.putBlock( block.locationRelative.x + location.x, // x block.locationRelative.y + location.y, // y block.locationRelative.z + location.z, // z block.block, block.meta, worldActual, physics ) }) } }