steel_core/worldgen/feature/features/
end_platform.rs1use 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}