chunkgen 0.2.0

Minecraft world generation library
Documentation
use serde::Deserialize;
use shulkr::util::BlockPosition;
use shulkr::world::block::BlockState;

use crate::world::worldgen::region::WorldGenRegion;

#[derive(Debug, Clone, Deserialize)]
pub struct FillLayerFeature {
    pub height: i32,
    pub state: BlockState,
}

impl FillLayerFeature {
    pub fn place(&self, region: &WorldGenRegion<'_>, origin: BlockPosition) -> bool {
        for dx in 0..16 {
            for dz in 0..16 {
                let pos = BlockPosition::new(
                    origin.x() + dx,
                    region.min_y() + self.height,
                    origin.z() + dz,
                );
                if region.get_block(pos).is_air() {
                    region.set_block_with_flags(pos, self.state, 2);
                }
            }
        }
        true
    }
}