steel_worldgen/structure/
mod.rs1use steel_registry::structure::StructureData;
8use steel_utils::random::legacy_random::LegacyRandom;
9
10mod box_octree;
11pub mod desert_pyramid;
12pub mod end_city;
13pub mod fortress;
14pub mod generation;
16pub mod generator;
18pub mod igloo;
19pub mod jigsaw;
20pub mod jungle_temple;
21pub mod mansion;
22pub mod mineshaft;
23pub mod nether_fossil;
24pub mod ocean_monument;
25pub mod ocean_ruin;
26mod piece;
27pub mod placement;
28pub mod ruined_portal;
29pub mod shipwreck;
30pub mod single_piece;
31pub mod start;
33pub mod stronghold;
34pub mod swamp_hut;
35pub mod utils;
37
38pub use piece::{
39 ProceduralPieceData, RuinedPortalProperties, StructureBlockIgnore, StructureMirror,
40 StructurePiece, StructurePiecePayload, TemplateMarkerHandling, TemplatePieceData,
41 TemplatePlacementAdjustment, TemplatePlacementClip, TemplatePostProcess, TemplateProcessorList,
42};
43
44pub use generation::{ColumnBlock, GenerationContext, GenerationStub, StructureGenerationContext};
45pub use generator::{
46 FixedStructureBiomeProvider, StructureBiomeProvider, StructureGenerator,
47 StructureGeneratorAssets, StructureLocateCandidate, StructureLocatePlacement,
48 StructureLocatePlan, squared_distance,
49};
50pub use start::{StructureReferenceMap, StructureReferenceSet, StructureStart, StructureStartMap};
51pub(crate) use utils::{make_oriented_piece_bounding_box, random_horizontal_direction};
52
53pub trait Structure: Send + Sync {
56 fn find_generation_point(
59 &self,
60 ctx: &mut dyn StructureGenerationContext,
61 structure: &StructureData,
62 rng: &mut LegacyRandom,
63 ) -> Option<GenerationStub>;
64}