Skip to main content

steel_core/worldgen/feature/features/
end_platform.rs

1use super::super::prelude::*;
2use super::super::runner::FeatureDecorationRunner;
3
4impl FeatureDecorationRunner {
5    pub(in crate::worldgen::feature) fn place_end_platform_feature(
6        region: &mut WorldGenRegion<'_>,
7        origin: BlockPos,
8    ) -> bool {
9        Self::create_end_platform(region, origin);
10        true
11    }
12
13    pub(in crate::worldgen::feature) fn create_end_platform(
14        region: &mut WorldGenRegion<'_>,
15        origin: BlockPos,
16    ) {
17        let obsidian = vanilla_blocks::OBSIDIAN.default_state();
18        let air = vanilla_blocks::AIR.default_state();
19
20        for dz in -2..=2 {
21            for dx in -2..=2 {
22                for dy in -1..3 {
23                    let pos = origin.offset(dx, dy, dz);
24                    let state = if dy == -1 { obsidian } else { air };
25                    if region.block_state(pos).get_block() != state.get_block() {
26                        let _ = region.set_block_state(pos, state, UpdateFlags::UPDATE_ALL);
27                    }
28                }
29            }
30        }
31    }
32}