Skip to main content

steel_registry/generated/
vanilla_structures.rs

1use crate::structure::{
2    DimensionPadding, HeightProviderData, JigsawConfig, LiquidSettingsData, MineshaftTypeData,
3    OceanRuinBiomeTempData, PoolAlias, RuinedPortalPlacementData, RuinedPortalSetupData,
4    StartHeight, StructureConfigData, StructureData, StructureGenerationStep, StructureRef,
5    StructureRegistry, StructureSpawnBoundingBox, StructureSpawnOverrideData, StructureSpawnerData,
6    TerrainAdjustment, VerticalAnchorData,
7};
8use std::sync::{LazyLock, OnceLock};
9use steel_utils::Identifier;
10static STRUCTURE_ANCIENT_CITY: LazyLock<StructureData> = LazyLock::new(|| StructureData {
11    key: Identifier::new("minecraft", "ancient_city"),
12    id: OnceLock::new(),
13    structure_type: Identifier::new("minecraft", "jigsaw"),
14    allowed_biomes: vec![Identifier::new("minecraft", "deep_dark")],
15    spawn_overrides: vec![
16        StructureSpawnOverrideData {
17            category: "water_creature".to_string(),
18            bounding_box: StructureSpawnBoundingBox::Full,
19            spawns: vec![],
20        },
21        StructureSpawnOverrideData {
22            category: "misc".to_string(),
23            bounding_box: StructureSpawnBoundingBox::Full,
24            spawns: vec![],
25        },
26        StructureSpawnOverrideData {
27            category: "axolotls".to_string(),
28            bounding_box: StructureSpawnBoundingBox::Full,
29            spawns: vec![],
30        },
31        StructureSpawnOverrideData {
32            category: "creature".to_string(),
33            bounding_box: StructureSpawnBoundingBox::Full,
34            spawns: vec![],
35        },
36        StructureSpawnOverrideData {
37            category: "monster".to_string(),
38            bounding_box: StructureSpawnBoundingBox::Full,
39            spawns: vec![],
40        },
41        StructureSpawnOverrideData {
42            category: "ambient".to_string(),
43            bounding_box: StructureSpawnBoundingBox::Full,
44            spawns: vec![],
45        },
46        StructureSpawnOverrideData {
47            category: "water_ambient".to_string(),
48            bounding_box: StructureSpawnBoundingBox::Full,
49            spawns: vec![],
50        },
51        StructureSpawnOverrideData {
52            category: "underground_water_creature".to_string(),
53            bounding_box: StructureSpawnBoundingBox::Full,
54            spawns: vec![],
55        },
56    ],
57    step: StructureGenerationStep::UndergroundDecoration,
58    terrain_adjustment: TerrainAdjustment::BeardBox,
59    config: StructureConfigData::Jigsaw(JigsawConfig {
60        start_pool: Identifier::new("minecraft", "ancient_city/city_center"),
61        max_depth: 7i32,
62        use_expansion_hack: false,
63        project_start_to_heightmap: None,
64        start_height: StartHeight::Constant(-27i32),
65        max_distance_from_center: 116i32,
66        start_jigsaw_name: Some(Identifier::new("minecraft", "city_anchor")),
67        dimension_padding: DimensionPadding {
68            bottom: 0i32,
69            top: 0i32,
70        },
71        pool_aliases: vec![],
72        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
73    }),
74});
75static STRUCTURE_BASTION_REMNANT: LazyLock<StructureData> = LazyLock::new(|| StructureData {
76    key: Identifier::new("minecraft", "bastion_remnant"),
77    id: OnceLock::new(),
78    structure_type: Identifier::new("minecraft", "jigsaw"),
79    allowed_biomes: vec![
80        Identifier::new("minecraft", "crimson_forest"),
81        Identifier::new("minecraft", "nether_wastes"),
82        Identifier::new("minecraft", "soul_sand_valley"),
83        Identifier::new("minecraft", "warped_forest"),
84    ],
85    spawn_overrides: vec![],
86    step: StructureGenerationStep::SurfaceStructures,
87    terrain_adjustment: TerrainAdjustment::None,
88    config: StructureConfigData::Jigsaw(JigsawConfig {
89        start_pool: Identifier::new("minecraft", "bastion/starts"),
90        max_depth: 6i32,
91        use_expansion_hack: false,
92        project_start_to_heightmap: None,
93        start_height: StartHeight::Constant(33i32),
94        max_distance_from_center: 80i32,
95        start_jigsaw_name: None,
96        dimension_padding: DimensionPadding {
97            bottom: 0i32,
98            top: 0i32,
99        },
100        pool_aliases: vec![],
101        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
102    }),
103});
104static STRUCTURE_BURIED_TREASURE: LazyLock<StructureData> = LazyLock::new(|| StructureData {
105    key: Identifier::new("minecraft", "buried_treasure"),
106    id: OnceLock::new(),
107    structure_type: Identifier::new("minecraft", "buried_treasure"),
108    allowed_biomes: vec![
109        Identifier::new("minecraft", "beach"),
110        Identifier::new("minecraft", "snowy_beach"),
111    ],
112    spawn_overrides: vec![],
113    step: StructureGenerationStep::UndergroundStructures,
114    terrain_adjustment: TerrainAdjustment::None,
115    config: StructureConfigData::Empty,
116});
117static STRUCTURE_DESERT_PYRAMID: LazyLock<StructureData> = LazyLock::new(|| StructureData {
118    key: Identifier::new("minecraft", "desert_pyramid"),
119    id: OnceLock::new(),
120    structure_type: Identifier::new("minecraft", "desert_pyramid"),
121    allowed_biomes: vec![Identifier::new("minecraft", "desert")],
122    spawn_overrides: vec![],
123    step: StructureGenerationStep::SurfaceStructures,
124    terrain_adjustment: TerrainAdjustment::None,
125    config: StructureConfigData::Empty,
126});
127static STRUCTURE_END_CITY: LazyLock<StructureData> = LazyLock::new(|| StructureData {
128    key: Identifier::new("minecraft", "end_city"),
129    id: OnceLock::new(),
130    structure_type: Identifier::new("minecraft", "end_city"),
131    allowed_biomes: vec![
132        Identifier::new("minecraft", "end_highlands"),
133        Identifier::new("minecraft", "end_midlands"),
134    ],
135    spawn_overrides: vec![],
136    step: StructureGenerationStep::SurfaceStructures,
137    terrain_adjustment: TerrainAdjustment::None,
138    config: StructureConfigData::Empty,
139});
140static STRUCTURE_FORTRESS: LazyLock<StructureData> = LazyLock::new(|| StructureData {
141    key: Identifier::new("minecraft", "fortress"),
142    id: OnceLock::new(),
143    structure_type: Identifier::new("minecraft", "fortress"),
144    allowed_biomes: vec![
145        Identifier::new("minecraft", "basalt_deltas"),
146        Identifier::new("minecraft", "crimson_forest"),
147        Identifier::new("minecraft", "nether_wastes"),
148        Identifier::new("minecraft", "soul_sand_valley"),
149        Identifier::new("minecraft", "warped_forest"),
150    ],
151    spawn_overrides: vec![StructureSpawnOverrideData {
152        category: "monster".to_string(),
153        bounding_box: StructureSpawnBoundingBox::Piece,
154        spawns: vec![
155            StructureSpawnerData {
156                entity_type: Identifier::new("minecraft", "blaze"),
157                weight: 10i32,
158                min_count: 2i32,
159                max_count: 3i32,
160            },
161            StructureSpawnerData {
162                entity_type: Identifier::new("minecraft", "zombified_piglin"),
163                weight: 5i32,
164                min_count: 4i32,
165                max_count: 4i32,
166            },
167            StructureSpawnerData {
168                entity_type: Identifier::new("minecraft", "wither_skeleton"),
169                weight: 8i32,
170                min_count: 5i32,
171                max_count: 5i32,
172            },
173            StructureSpawnerData {
174                entity_type: Identifier::new("minecraft", "skeleton"),
175                weight: 2i32,
176                min_count: 5i32,
177                max_count: 5i32,
178            },
179            StructureSpawnerData {
180                entity_type: Identifier::new("minecraft", "magma_cube"),
181                weight: 3i32,
182                min_count: 4i32,
183                max_count: 4i32,
184            },
185        ],
186    }],
187    step: StructureGenerationStep::UndergroundDecoration,
188    terrain_adjustment: TerrainAdjustment::None,
189    config: StructureConfigData::Empty,
190});
191static STRUCTURE_IGLOO: LazyLock<StructureData> = LazyLock::new(|| StructureData {
192    key: Identifier::new("minecraft", "igloo"),
193    id: OnceLock::new(),
194    structure_type: Identifier::new("minecraft", "igloo"),
195    allowed_biomes: vec![
196        Identifier::new("minecraft", "snowy_plains"),
197        Identifier::new("minecraft", "snowy_slopes"),
198        Identifier::new("minecraft", "snowy_taiga"),
199    ],
200    spawn_overrides: vec![],
201    step: StructureGenerationStep::SurfaceStructures,
202    terrain_adjustment: TerrainAdjustment::None,
203    config: StructureConfigData::Empty,
204});
205static STRUCTURE_JUNGLE_PYRAMID: LazyLock<StructureData> = LazyLock::new(|| StructureData {
206    key: Identifier::new("minecraft", "jungle_pyramid"),
207    id: OnceLock::new(),
208    structure_type: Identifier::new("minecraft", "jungle_temple"),
209    allowed_biomes: vec![
210        Identifier::new("minecraft", "bamboo_jungle"),
211        Identifier::new("minecraft", "jungle"),
212    ],
213    spawn_overrides: vec![],
214    step: StructureGenerationStep::SurfaceStructures,
215    terrain_adjustment: TerrainAdjustment::None,
216    config: StructureConfigData::Empty,
217});
218static STRUCTURE_MANSION: LazyLock<StructureData> = LazyLock::new(|| StructureData {
219    key: Identifier::new("minecraft", "mansion"),
220    id: OnceLock::new(),
221    structure_type: Identifier::new("minecraft", "woodland_mansion"),
222    allowed_biomes: vec![
223        Identifier::new("minecraft", "dark_forest"),
224        Identifier::new("minecraft", "pale_garden"),
225    ],
226    spawn_overrides: vec![],
227    step: StructureGenerationStep::SurfaceStructures,
228    terrain_adjustment: TerrainAdjustment::None,
229    config: StructureConfigData::Empty,
230});
231static STRUCTURE_MINESHAFT: LazyLock<StructureData> = LazyLock::new(|| StructureData {
232    key: Identifier::new("minecraft", "mineshaft"),
233    id: OnceLock::new(),
234    structure_type: Identifier::new("minecraft", "mineshaft"),
235    allowed_biomes: vec![
236        Identifier::new("minecraft", "bamboo_jungle"),
237        Identifier::new("minecraft", "beach"),
238        Identifier::new("minecraft", "birch_forest"),
239        Identifier::new("minecraft", "cherry_grove"),
240        Identifier::new("minecraft", "cold_ocean"),
241        Identifier::new("minecraft", "dark_forest"),
242        Identifier::new("minecraft", "deep_cold_ocean"),
243        Identifier::new("minecraft", "deep_frozen_ocean"),
244        Identifier::new("minecraft", "deep_lukewarm_ocean"),
245        Identifier::new("minecraft", "deep_ocean"),
246        Identifier::new("minecraft", "desert"),
247        Identifier::new("minecraft", "dripstone_caves"),
248        Identifier::new("minecraft", "flower_forest"),
249        Identifier::new("minecraft", "forest"),
250        Identifier::new("minecraft", "frozen_ocean"),
251        Identifier::new("minecraft", "frozen_peaks"),
252        Identifier::new("minecraft", "frozen_river"),
253        Identifier::new("minecraft", "grove"),
254        Identifier::new("minecraft", "ice_spikes"),
255        Identifier::new("minecraft", "jagged_peaks"),
256        Identifier::new("minecraft", "jungle"),
257        Identifier::new("minecraft", "lukewarm_ocean"),
258        Identifier::new("minecraft", "lush_caves"),
259        Identifier::new("minecraft", "mangrove_swamp"),
260        Identifier::new("minecraft", "meadow"),
261        Identifier::new("minecraft", "mushroom_fields"),
262        Identifier::new("minecraft", "ocean"),
263        Identifier::new("minecraft", "old_growth_birch_forest"),
264        Identifier::new("minecraft", "old_growth_pine_taiga"),
265        Identifier::new("minecraft", "old_growth_spruce_taiga"),
266        Identifier::new("minecraft", "pale_garden"),
267        Identifier::new("minecraft", "plains"),
268        Identifier::new("minecraft", "river"),
269        Identifier::new("minecraft", "savanna"),
270        Identifier::new("minecraft", "savanna_plateau"),
271        Identifier::new("minecraft", "snowy_beach"),
272        Identifier::new("minecraft", "snowy_plains"),
273        Identifier::new("minecraft", "snowy_slopes"),
274        Identifier::new("minecraft", "snowy_taiga"),
275        Identifier::new("minecraft", "sparse_jungle"),
276        Identifier::new("minecraft", "stony_peaks"),
277        Identifier::new("minecraft", "stony_shore"),
278        Identifier::new("minecraft", "sunflower_plains"),
279        Identifier::new("minecraft", "swamp"),
280        Identifier::new("minecraft", "taiga"),
281        Identifier::new("minecraft", "warm_ocean"),
282        Identifier::new("minecraft", "windswept_forest"),
283        Identifier::new("minecraft", "windswept_gravelly_hills"),
284        Identifier::new("minecraft", "windswept_hills"),
285        Identifier::new("minecraft", "windswept_savanna"),
286    ],
287    spawn_overrides: vec![],
288    step: StructureGenerationStep::UndergroundStructures,
289    terrain_adjustment: TerrainAdjustment::None,
290    config: StructureConfigData::Mineshaft {
291        mineshaft_type: MineshaftTypeData::Normal,
292    },
293});
294static STRUCTURE_MINESHAFT_MESA: LazyLock<StructureData> = LazyLock::new(|| StructureData {
295    key: Identifier::new("minecraft", "mineshaft_mesa"),
296    id: OnceLock::new(),
297    structure_type: Identifier::new("minecraft", "mineshaft"),
298    allowed_biomes: vec![
299        Identifier::new("minecraft", "badlands"),
300        Identifier::new("minecraft", "eroded_badlands"),
301        Identifier::new("minecraft", "wooded_badlands"),
302    ],
303    spawn_overrides: vec![],
304    step: StructureGenerationStep::UndergroundStructures,
305    terrain_adjustment: TerrainAdjustment::None,
306    config: StructureConfigData::Mineshaft {
307        mineshaft_type: MineshaftTypeData::Mesa,
308    },
309});
310static STRUCTURE_MONUMENT: LazyLock<StructureData> = LazyLock::new(|| StructureData {
311    key: Identifier::new("minecraft", "monument"),
312    id: OnceLock::new(),
313    structure_type: Identifier::new("minecraft", "ocean_monument"),
314    allowed_biomes: vec![
315        Identifier::new("minecraft", "deep_cold_ocean"),
316        Identifier::new("minecraft", "deep_frozen_ocean"),
317        Identifier::new("minecraft", "deep_lukewarm_ocean"),
318        Identifier::new("minecraft", "deep_ocean"),
319    ],
320    spawn_overrides: vec![
321        StructureSpawnOverrideData {
322            category: "monster".to_string(),
323            bounding_box: StructureSpawnBoundingBox::Full,
324            spawns: vec![StructureSpawnerData {
325                entity_type: Identifier::new("minecraft", "guardian"),
326                weight: 1i32,
327                min_count: 2i32,
328                max_count: 4i32,
329            }],
330        },
331        StructureSpawnOverrideData {
332            category: "axolotls".to_string(),
333            bounding_box: StructureSpawnBoundingBox::Full,
334            spawns: vec![],
335        },
336        StructureSpawnOverrideData {
337            category: "underground_water_creature".to_string(),
338            bounding_box: StructureSpawnBoundingBox::Full,
339            spawns: vec![],
340        },
341    ],
342    step: StructureGenerationStep::SurfaceStructures,
343    terrain_adjustment: TerrainAdjustment::None,
344    config: StructureConfigData::Empty,
345});
346static STRUCTURE_NETHER_FOSSIL: LazyLock<StructureData> = LazyLock::new(|| StructureData {
347    key: Identifier::new("minecraft", "nether_fossil"),
348    id: OnceLock::new(),
349    structure_type: Identifier::new("minecraft", "nether_fossil"),
350    allowed_biomes: vec![Identifier::new("minecraft", "soul_sand_valley")],
351    spawn_overrides: vec![],
352    step: StructureGenerationStep::UndergroundDecoration,
353    terrain_adjustment: TerrainAdjustment::BeardThin,
354    config: StructureConfigData::NetherFossil {
355        height: HeightProviderData::Uniform {
356            min_inclusive: VerticalAnchorData::Absolute(32i32),
357            max_inclusive: VerticalAnchorData::BelowTop(2i32),
358        },
359    },
360});
361static STRUCTURE_OCEAN_RUIN_COLD: LazyLock<StructureData> = LazyLock::new(|| StructureData {
362    key: Identifier::new("minecraft", "ocean_ruin_cold"),
363    id: OnceLock::new(),
364    structure_type: Identifier::new("minecraft", "ocean_ruin"),
365    allowed_biomes: vec![
366        Identifier::new("minecraft", "cold_ocean"),
367        Identifier::new("minecraft", "deep_cold_ocean"),
368        Identifier::new("minecraft", "deep_frozen_ocean"),
369        Identifier::new("minecraft", "deep_ocean"),
370        Identifier::new("minecraft", "frozen_ocean"),
371        Identifier::new("minecraft", "ocean"),
372    ],
373    spawn_overrides: vec![],
374    step: StructureGenerationStep::SurfaceStructures,
375    terrain_adjustment: TerrainAdjustment::None,
376    config: StructureConfigData::OceanRuin {
377        biome_temp: OceanRuinBiomeTempData::Cold,
378        large_probability: 0.3f32,
379        cluster_probability: 0.9f32,
380    },
381});
382static STRUCTURE_OCEAN_RUIN_WARM: LazyLock<StructureData> = LazyLock::new(|| StructureData {
383    key: Identifier::new("minecraft", "ocean_ruin_warm"),
384    id: OnceLock::new(),
385    structure_type: Identifier::new("minecraft", "ocean_ruin"),
386    allowed_biomes: vec![
387        Identifier::new("minecraft", "deep_lukewarm_ocean"),
388        Identifier::new("minecraft", "lukewarm_ocean"),
389        Identifier::new("minecraft", "warm_ocean"),
390    ],
391    spawn_overrides: vec![],
392    step: StructureGenerationStep::SurfaceStructures,
393    terrain_adjustment: TerrainAdjustment::None,
394    config: StructureConfigData::OceanRuin {
395        biome_temp: OceanRuinBiomeTempData::Warm,
396        large_probability: 0.3f32,
397        cluster_probability: 0.9f32,
398    },
399});
400static STRUCTURE_PILLAGER_OUTPOST: LazyLock<StructureData> = LazyLock::new(|| StructureData {
401    key: Identifier::new("minecraft", "pillager_outpost"),
402    id: OnceLock::new(),
403    structure_type: Identifier::new("minecraft", "jigsaw"),
404    allowed_biomes: vec![
405        Identifier::new("minecraft", "cherry_grove"),
406        Identifier::new("minecraft", "desert"),
407        Identifier::new("minecraft", "frozen_peaks"),
408        Identifier::new("minecraft", "grove"),
409        Identifier::new("minecraft", "jagged_peaks"),
410        Identifier::new("minecraft", "meadow"),
411        Identifier::new("minecraft", "plains"),
412        Identifier::new("minecraft", "savanna"),
413        Identifier::new("minecraft", "snowy_plains"),
414        Identifier::new("minecraft", "snowy_slopes"),
415        Identifier::new("minecraft", "stony_peaks"),
416        Identifier::new("minecraft", "taiga"),
417    ],
418    spawn_overrides: vec![StructureSpawnOverrideData {
419        category: "monster".to_string(),
420        bounding_box: StructureSpawnBoundingBox::Full,
421        spawns: vec![StructureSpawnerData {
422            entity_type: Identifier::new("minecraft", "pillager"),
423            weight: 1i32,
424            min_count: 1i32,
425            max_count: 1i32,
426        }],
427    }],
428    step: StructureGenerationStep::SurfaceStructures,
429    terrain_adjustment: TerrainAdjustment::BeardThin,
430    config: StructureConfigData::Jigsaw(JigsawConfig {
431        start_pool: Identifier::new("minecraft", "pillager_outpost/base_plates"),
432        max_depth: 7i32,
433        use_expansion_hack: true,
434        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
435        start_height: StartHeight::Constant(0i32),
436        max_distance_from_center: 80i32,
437        start_jigsaw_name: None,
438        dimension_padding: DimensionPadding {
439            bottom: 0i32,
440            top: 0i32,
441        },
442        pool_aliases: vec![],
443        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
444    }),
445});
446static STRUCTURE_RUINED_PORTAL: LazyLock<StructureData> = LazyLock::new(|| StructureData {
447    key: Identifier::new("minecraft", "ruined_portal"),
448    id: OnceLock::new(),
449    structure_type: Identifier::new("minecraft", "ruined_portal"),
450    allowed_biomes: vec![
451        Identifier::new("minecraft", "beach"),
452        Identifier::new("minecraft", "birch_forest"),
453        Identifier::new("minecraft", "dark_forest"),
454        Identifier::new("minecraft", "dripstone_caves"),
455        Identifier::new("minecraft", "flower_forest"),
456        Identifier::new("minecraft", "forest"),
457        Identifier::new("minecraft", "frozen_river"),
458        Identifier::new("minecraft", "grove"),
459        Identifier::new("minecraft", "ice_spikes"),
460        Identifier::new("minecraft", "lush_caves"),
461        Identifier::new("minecraft", "mushroom_fields"),
462        Identifier::new("minecraft", "old_growth_birch_forest"),
463        Identifier::new("minecraft", "old_growth_pine_taiga"),
464        Identifier::new("minecraft", "old_growth_spruce_taiga"),
465        Identifier::new("minecraft", "pale_garden"),
466        Identifier::new("minecraft", "plains"),
467        Identifier::new("minecraft", "river"),
468        Identifier::new("minecraft", "savanna"),
469        Identifier::new("minecraft", "snowy_beach"),
470        Identifier::new("minecraft", "snowy_plains"),
471        Identifier::new("minecraft", "snowy_taiga"),
472        Identifier::new("minecraft", "sunflower_plains"),
473        Identifier::new("minecraft", "taiga"),
474    ],
475    spawn_overrides: vec![],
476    step: StructureGenerationStep::SurfaceStructures,
477    terrain_adjustment: TerrainAdjustment::None,
478    config: StructureConfigData::RuinedPortal {
479        setups: vec![
480            RuinedPortalSetupData {
481                placement: RuinedPortalPlacementData::Underground,
482                weight: 0.5f32,
483                air_pocket_probability: 1f32,
484                can_be_cold: true,
485                mossiness: 0.2f32,
486                overgrown: false,
487                replace_with_blackstone: false,
488                vines: false,
489            },
490            RuinedPortalSetupData {
491                placement: RuinedPortalPlacementData::OnLandSurface,
492                weight: 0.5f32,
493                air_pocket_probability: 0.5f32,
494                can_be_cold: true,
495                mossiness: 0.2f32,
496                overgrown: false,
497                replace_with_blackstone: false,
498                vines: false,
499            },
500        ],
501    },
502});
503static STRUCTURE_RUINED_PORTAL_DESERT: LazyLock<StructureData> = LazyLock::new(|| StructureData {
504    key: Identifier::new("minecraft", "ruined_portal_desert"),
505    id: OnceLock::new(),
506    structure_type: Identifier::new("minecraft", "ruined_portal"),
507    allowed_biomes: vec![Identifier::new("minecraft", "desert")],
508    spawn_overrides: vec![],
509    step: StructureGenerationStep::SurfaceStructures,
510    terrain_adjustment: TerrainAdjustment::None,
511    config: StructureConfigData::RuinedPortal {
512        setups: vec![RuinedPortalSetupData {
513            placement: RuinedPortalPlacementData::PartlyBuried,
514            weight: 1f32,
515            air_pocket_probability: 0f32,
516            can_be_cold: false,
517            mossiness: 0f32,
518            overgrown: false,
519            replace_with_blackstone: false,
520            vines: false,
521        }],
522    },
523});
524static STRUCTURE_RUINED_PORTAL_JUNGLE: LazyLock<StructureData> = LazyLock::new(|| StructureData {
525    key: Identifier::new("minecraft", "ruined_portal_jungle"),
526    id: OnceLock::new(),
527    structure_type: Identifier::new("minecraft", "ruined_portal"),
528    allowed_biomes: vec![
529        Identifier::new("minecraft", "bamboo_jungle"),
530        Identifier::new("minecraft", "jungle"),
531        Identifier::new("minecraft", "sparse_jungle"),
532    ],
533    spawn_overrides: vec![],
534    step: StructureGenerationStep::SurfaceStructures,
535    terrain_adjustment: TerrainAdjustment::None,
536    config: StructureConfigData::RuinedPortal {
537        setups: vec![RuinedPortalSetupData {
538            placement: RuinedPortalPlacementData::OnLandSurface,
539            weight: 1f32,
540            air_pocket_probability: 0.5f32,
541            can_be_cold: false,
542            mossiness: 0.8f32,
543            overgrown: true,
544            replace_with_blackstone: false,
545            vines: true,
546        }],
547    },
548});
549static STRUCTURE_RUINED_PORTAL_MOUNTAIN: LazyLock<StructureData> =
550    LazyLock::new(|| StructureData {
551        key: Identifier::new("minecraft", "ruined_portal_mountain"),
552        id: OnceLock::new(),
553        structure_type: Identifier::new("minecraft", "ruined_portal"),
554        allowed_biomes: vec![
555            Identifier::new("minecraft", "badlands"),
556            Identifier::new("minecraft", "cherry_grove"),
557            Identifier::new("minecraft", "eroded_badlands"),
558            Identifier::new("minecraft", "frozen_peaks"),
559            Identifier::new("minecraft", "jagged_peaks"),
560            Identifier::new("minecraft", "meadow"),
561            Identifier::new("minecraft", "savanna_plateau"),
562            Identifier::new("minecraft", "snowy_slopes"),
563            Identifier::new("minecraft", "stony_peaks"),
564            Identifier::new("minecraft", "stony_shore"),
565            Identifier::new("minecraft", "windswept_forest"),
566            Identifier::new("minecraft", "windswept_gravelly_hills"),
567            Identifier::new("minecraft", "windswept_hills"),
568            Identifier::new("minecraft", "windswept_savanna"),
569            Identifier::new("minecraft", "wooded_badlands"),
570        ],
571        spawn_overrides: vec![],
572        step: StructureGenerationStep::SurfaceStructures,
573        terrain_adjustment: TerrainAdjustment::None,
574        config: StructureConfigData::RuinedPortal {
575            setups: vec![
576                RuinedPortalSetupData {
577                    placement: RuinedPortalPlacementData::InMountain,
578                    weight: 0.5f32,
579                    air_pocket_probability: 1f32,
580                    can_be_cold: true,
581                    mossiness: 0.2f32,
582                    overgrown: false,
583                    replace_with_blackstone: false,
584                    vines: false,
585                },
586                RuinedPortalSetupData {
587                    placement: RuinedPortalPlacementData::OnLandSurface,
588                    weight: 0.5f32,
589                    air_pocket_probability: 0.5f32,
590                    can_be_cold: true,
591                    mossiness: 0.2f32,
592                    overgrown: false,
593                    replace_with_blackstone: false,
594                    vines: false,
595                },
596            ],
597        },
598    });
599static STRUCTURE_RUINED_PORTAL_NETHER: LazyLock<StructureData> = LazyLock::new(|| StructureData {
600    key: Identifier::new("minecraft", "ruined_portal_nether"),
601    id: OnceLock::new(),
602    structure_type: Identifier::new("minecraft", "ruined_portal"),
603    allowed_biomes: vec![
604        Identifier::new("minecraft", "basalt_deltas"),
605        Identifier::new("minecraft", "crimson_forest"),
606        Identifier::new("minecraft", "nether_wastes"),
607        Identifier::new("minecraft", "soul_sand_valley"),
608        Identifier::new("minecraft", "warped_forest"),
609    ],
610    spawn_overrides: vec![],
611    step: StructureGenerationStep::SurfaceStructures,
612    terrain_adjustment: TerrainAdjustment::None,
613    config: StructureConfigData::RuinedPortal {
614        setups: vec![RuinedPortalSetupData {
615            placement: RuinedPortalPlacementData::InNether,
616            weight: 1f32,
617            air_pocket_probability: 0.5f32,
618            can_be_cold: false,
619            mossiness: 0f32,
620            overgrown: false,
621            replace_with_blackstone: true,
622            vines: false,
623        }],
624    },
625});
626static STRUCTURE_RUINED_PORTAL_OCEAN: LazyLock<StructureData> = LazyLock::new(|| StructureData {
627    key: Identifier::new("minecraft", "ruined_portal_ocean"),
628    id: OnceLock::new(),
629    structure_type: Identifier::new("minecraft", "ruined_portal"),
630    allowed_biomes: vec![
631        Identifier::new("minecraft", "cold_ocean"),
632        Identifier::new("minecraft", "deep_cold_ocean"),
633        Identifier::new("minecraft", "deep_frozen_ocean"),
634        Identifier::new("minecraft", "deep_lukewarm_ocean"),
635        Identifier::new("minecraft", "deep_ocean"),
636        Identifier::new("minecraft", "frozen_ocean"),
637        Identifier::new("minecraft", "lukewarm_ocean"),
638        Identifier::new("minecraft", "ocean"),
639        Identifier::new("minecraft", "warm_ocean"),
640    ],
641    spawn_overrides: vec![],
642    step: StructureGenerationStep::SurfaceStructures,
643    terrain_adjustment: TerrainAdjustment::None,
644    config: StructureConfigData::RuinedPortal {
645        setups: vec![RuinedPortalSetupData {
646            placement: RuinedPortalPlacementData::OnOceanFloor,
647            weight: 1f32,
648            air_pocket_probability: 0f32,
649            can_be_cold: true,
650            mossiness: 0.8f32,
651            overgrown: false,
652            replace_with_blackstone: false,
653            vines: false,
654        }],
655    },
656});
657static STRUCTURE_RUINED_PORTAL_SWAMP: LazyLock<StructureData> = LazyLock::new(|| StructureData {
658    key: Identifier::new("minecraft", "ruined_portal_swamp"),
659    id: OnceLock::new(),
660    structure_type: Identifier::new("minecraft", "ruined_portal"),
661    allowed_biomes: vec![
662        Identifier::new("minecraft", "mangrove_swamp"),
663        Identifier::new("minecraft", "swamp"),
664    ],
665    spawn_overrides: vec![],
666    step: StructureGenerationStep::SurfaceStructures,
667    terrain_adjustment: TerrainAdjustment::None,
668    config: StructureConfigData::RuinedPortal {
669        setups: vec![RuinedPortalSetupData {
670            placement: RuinedPortalPlacementData::OnOceanFloor,
671            weight: 1f32,
672            air_pocket_probability: 0f32,
673            can_be_cold: false,
674            mossiness: 0.5f32,
675            overgrown: false,
676            replace_with_blackstone: false,
677            vines: true,
678        }],
679    },
680});
681static STRUCTURE_SHIPWRECK: LazyLock<StructureData> = LazyLock::new(|| StructureData {
682    key: Identifier::new("minecraft", "shipwreck"),
683    id: OnceLock::new(),
684    structure_type: Identifier::new("minecraft", "shipwreck"),
685    allowed_biomes: vec![
686        Identifier::new("minecraft", "cold_ocean"),
687        Identifier::new("minecraft", "deep_cold_ocean"),
688        Identifier::new("minecraft", "deep_frozen_ocean"),
689        Identifier::new("minecraft", "deep_lukewarm_ocean"),
690        Identifier::new("minecraft", "deep_ocean"),
691        Identifier::new("minecraft", "frozen_ocean"),
692        Identifier::new("minecraft", "lukewarm_ocean"),
693        Identifier::new("minecraft", "ocean"),
694        Identifier::new("minecraft", "warm_ocean"),
695    ],
696    spawn_overrides: vec![],
697    step: StructureGenerationStep::SurfaceStructures,
698    terrain_adjustment: TerrainAdjustment::None,
699    config: StructureConfigData::Shipwreck { is_beached: false },
700});
701static STRUCTURE_SHIPWRECK_BEACHED: LazyLock<StructureData> = LazyLock::new(|| StructureData {
702    key: Identifier::new("minecraft", "shipwreck_beached"),
703    id: OnceLock::new(),
704    structure_type: Identifier::new("minecraft", "shipwreck"),
705    allowed_biomes: vec![
706        Identifier::new("minecraft", "beach"),
707        Identifier::new("minecraft", "snowy_beach"),
708    ],
709    spawn_overrides: vec![],
710    step: StructureGenerationStep::SurfaceStructures,
711    terrain_adjustment: TerrainAdjustment::None,
712    config: StructureConfigData::Shipwreck { is_beached: true },
713});
714static STRUCTURE_STRONGHOLD: LazyLock<StructureData> = LazyLock::new(|| StructureData {
715    key: Identifier::new("minecraft", "stronghold"),
716    id: OnceLock::new(),
717    structure_type: Identifier::new("minecraft", "stronghold"),
718    allowed_biomes: vec![
719        Identifier::new("minecraft", "badlands"),
720        Identifier::new("minecraft", "bamboo_jungle"),
721        Identifier::new("minecraft", "beach"),
722        Identifier::new("minecraft", "birch_forest"),
723        Identifier::new("minecraft", "cherry_grove"),
724        Identifier::new("minecraft", "cold_ocean"),
725        Identifier::new("minecraft", "dark_forest"),
726        Identifier::new("minecraft", "deep_cold_ocean"),
727        Identifier::new("minecraft", "deep_dark"),
728        Identifier::new("minecraft", "deep_frozen_ocean"),
729        Identifier::new("minecraft", "deep_lukewarm_ocean"),
730        Identifier::new("minecraft", "deep_ocean"),
731        Identifier::new("minecraft", "desert"),
732        Identifier::new("minecraft", "dripstone_caves"),
733        Identifier::new("minecraft", "eroded_badlands"),
734        Identifier::new("minecraft", "flower_forest"),
735        Identifier::new("minecraft", "forest"),
736        Identifier::new("minecraft", "frozen_ocean"),
737        Identifier::new("minecraft", "frozen_peaks"),
738        Identifier::new("minecraft", "frozen_river"),
739        Identifier::new("minecraft", "grove"),
740        Identifier::new("minecraft", "ice_spikes"),
741        Identifier::new("minecraft", "jagged_peaks"),
742        Identifier::new("minecraft", "jungle"),
743        Identifier::new("minecraft", "lukewarm_ocean"),
744        Identifier::new("minecraft", "lush_caves"),
745        Identifier::new("minecraft", "mangrove_swamp"),
746        Identifier::new("minecraft", "meadow"),
747        Identifier::new("minecraft", "mushroom_fields"),
748        Identifier::new("minecraft", "ocean"),
749        Identifier::new("minecraft", "old_growth_birch_forest"),
750        Identifier::new("minecraft", "old_growth_pine_taiga"),
751        Identifier::new("minecraft", "old_growth_spruce_taiga"),
752        Identifier::new("minecraft", "pale_garden"),
753        Identifier::new("minecraft", "plains"),
754        Identifier::new("minecraft", "river"),
755        Identifier::new("minecraft", "savanna"),
756        Identifier::new("minecraft", "savanna_plateau"),
757        Identifier::new("minecraft", "snowy_beach"),
758        Identifier::new("minecraft", "snowy_plains"),
759        Identifier::new("minecraft", "snowy_slopes"),
760        Identifier::new("minecraft", "snowy_taiga"),
761        Identifier::new("minecraft", "sparse_jungle"),
762        Identifier::new("minecraft", "stony_peaks"),
763        Identifier::new("minecraft", "stony_shore"),
764        Identifier::new("minecraft", "sunflower_plains"),
765        Identifier::new("minecraft", "swamp"),
766        Identifier::new("minecraft", "taiga"),
767        Identifier::new("minecraft", "warm_ocean"),
768        Identifier::new("minecraft", "windswept_forest"),
769        Identifier::new("minecraft", "windswept_gravelly_hills"),
770        Identifier::new("minecraft", "windswept_hills"),
771        Identifier::new("minecraft", "windswept_savanna"),
772        Identifier::new("minecraft", "wooded_badlands"),
773    ],
774    spawn_overrides: vec![],
775    step: StructureGenerationStep::SurfaceStructures,
776    terrain_adjustment: TerrainAdjustment::Bury,
777    config: StructureConfigData::Empty,
778});
779static STRUCTURE_SWAMP_HUT: LazyLock<StructureData> = LazyLock::new(|| StructureData {
780    key: Identifier::new("minecraft", "swamp_hut"),
781    id: OnceLock::new(),
782    structure_type: Identifier::new("minecraft", "swamp_hut"),
783    allowed_biomes: vec![Identifier::new("minecraft", "swamp")],
784    spawn_overrides: vec![
785        StructureSpawnOverrideData {
786            category: "monster".to_string(),
787            bounding_box: StructureSpawnBoundingBox::Piece,
788            spawns: vec![StructureSpawnerData {
789                entity_type: Identifier::new("minecraft", "witch"),
790                weight: 1i32,
791                min_count: 1i32,
792                max_count: 1i32,
793            }],
794        },
795        StructureSpawnOverrideData {
796            category: "creature".to_string(),
797            bounding_box: StructureSpawnBoundingBox::Piece,
798            spawns: vec![StructureSpawnerData {
799                entity_type: Identifier::new("minecraft", "cat"),
800                weight: 1i32,
801                min_count: 1i32,
802                max_count: 1i32,
803            }],
804        },
805    ],
806    step: StructureGenerationStep::SurfaceStructures,
807    terrain_adjustment: TerrainAdjustment::None,
808    config: StructureConfigData::Empty,
809});
810static STRUCTURE_TRAIL_RUINS: LazyLock<StructureData> = LazyLock::new(|| StructureData {
811    key: Identifier::new("minecraft", "trail_ruins"),
812    id: OnceLock::new(),
813    structure_type: Identifier::new("minecraft", "jigsaw"),
814    allowed_biomes: vec![
815        Identifier::new("minecraft", "jungle"),
816        Identifier::new("minecraft", "old_growth_birch_forest"),
817        Identifier::new("minecraft", "old_growth_pine_taiga"),
818        Identifier::new("minecraft", "old_growth_spruce_taiga"),
819        Identifier::new("minecraft", "snowy_taiga"),
820        Identifier::new("minecraft", "taiga"),
821    ],
822    spawn_overrides: vec![],
823    step: StructureGenerationStep::UndergroundStructures,
824    terrain_adjustment: TerrainAdjustment::Bury,
825    config: StructureConfigData::Jigsaw(JigsawConfig {
826        start_pool: Identifier::new("minecraft", "trail_ruins/tower"),
827        max_depth: 7i32,
828        use_expansion_hack: false,
829        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
830        start_height: StartHeight::Constant(-15i32),
831        max_distance_from_center: 80i32,
832        start_jigsaw_name: None,
833        dimension_padding: DimensionPadding {
834            bottom: 0i32,
835            top: 0i32,
836        },
837        pool_aliases: vec![],
838        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
839    }),
840});
841static STRUCTURE_TRIAL_CHAMBERS: LazyLock<StructureData> = LazyLock::new(|| StructureData {
842    key: Identifier::new("minecraft", "trial_chambers"),
843    id: OnceLock::new(),
844    structure_type: Identifier::new("minecraft", "jigsaw"),
845    allowed_biomes: vec![
846        Identifier::new("minecraft", "badlands"),
847        Identifier::new("minecraft", "bamboo_jungle"),
848        Identifier::new("minecraft", "beach"),
849        Identifier::new("minecraft", "birch_forest"),
850        Identifier::new("minecraft", "cherry_grove"),
851        Identifier::new("minecraft", "cold_ocean"),
852        Identifier::new("minecraft", "dark_forest"),
853        Identifier::new("minecraft", "deep_cold_ocean"),
854        Identifier::new("minecraft", "deep_frozen_ocean"),
855        Identifier::new("minecraft", "deep_lukewarm_ocean"),
856        Identifier::new("minecraft", "deep_ocean"),
857        Identifier::new("minecraft", "desert"),
858        Identifier::new("minecraft", "dripstone_caves"),
859        Identifier::new("minecraft", "eroded_badlands"),
860        Identifier::new("minecraft", "flower_forest"),
861        Identifier::new("minecraft", "forest"),
862        Identifier::new("minecraft", "frozen_ocean"),
863        Identifier::new("minecraft", "frozen_peaks"),
864        Identifier::new("minecraft", "frozen_river"),
865        Identifier::new("minecraft", "grove"),
866        Identifier::new("minecraft", "ice_spikes"),
867        Identifier::new("minecraft", "jagged_peaks"),
868        Identifier::new("minecraft", "jungle"),
869        Identifier::new("minecraft", "lukewarm_ocean"),
870        Identifier::new("minecraft", "lush_caves"),
871        Identifier::new("minecraft", "mangrove_swamp"),
872        Identifier::new("minecraft", "meadow"),
873        Identifier::new("minecraft", "mushroom_fields"),
874        Identifier::new("minecraft", "ocean"),
875        Identifier::new("minecraft", "old_growth_birch_forest"),
876        Identifier::new("minecraft", "old_growth_pine_taiga"),
877        Identifier::new("minecraft", "old_growth_spruce_taiga"),
878        Identifier::new("minecraft", "pale_garden"),
879        Identifier::new("minecraft", "plains"),
880        Identifier::new("minecraft", "river"),
881        Identifier::new("minecraft", "savanna"),
882        Identifier::new("minecraft", "savanna_plateau"),
883        Identifier::new("minecraft", "snowy_beach"),
884        Identifier::new("minecraft", "snowy_plains"),
885        Identifier::new("minecraft", "snowy_slopes"),
886        Identifier::new("minecraft", "snowy_taiga"),
887        Identifier::new("minecraft", "sparse_jungle"),
888        Identifier::new("minecraft", "stony_peaks"),
889        Identifier::new("minecraft", "stony_shore"),
890        Identifier::new("minecraft", "sunflower_plains"),
891        Identifier::new("minecraft", "swamp"),
892        Identifier::new("minecraft", "taiga"),
893        Identifier::new("minecraft", "warm_ocean"),
894        Identifier::new("minecraft", "windswept_forest"),
895        Identifier::new("minecraft", "windswept_gravelly_hills"),
896        Identifier::new("minecraft", "windswept_hills"),
897        Identifier::new("minecraft", "windswept_savanna"),
898        Identifier::new("minecraft", "wooded_badlands"),
899    ],
900    spawn_overrides: vec![
901        StructureSpawnOverrideData {
902            category: "water_creature".to_string(),
903            bounding_box: StructureSpawnBoundingBox::Piece,
904            spawns: vec![],
905        },
906        StructureSpawnOverrideData {
907            category: "misc".to_string(),
908            bounding_box: StructureSpawnBoundingBox::Piece,
909            spawns: vec![],
910        },
911        StructureSpawnOverrideData {
912            category: "axolotls".to_string(),
913            bounding_box: StructureSpawnBoundingBox::Piece,
914            spawns: vec![],
915        },
916        StructureSpawnOverrideData {
917            category: "creature".to_string(),
918            bounding_box: StructureSpawnBoundingBox::Piece,
919            spawns: vec![],
920        },
921        StructureSpawnOverrideData {
922            category: "monster".to_string(),
923            bounding_box: StructureSpawnBoundingBox::Piece,
924            spawns: vec![],
925        },
926        StructureSpawnOverrideData {
927            category: "ambient".to_string(),
928            bounding_box: StructureSpawnBoundingBox::Piece,
929            spawns: vec![],
930        },
931        StructureSpawnOverrideData {
932            category: "water_ambient".to_string(),
933            bounding_box: StructureSpawnBoundingBox::Piece,
934            spawns: vec![],
935        },
936        StructureSpawnOverrideData {
937            category: "underground_water_creature".to_string(),
938            bounding_box: StructureSpawnBoundingBox::Piece,
939            spawns: vec![],
940        },
941    ],
942    step: StructureGenerationStep::UndergroundStructures,
943    terrain_adjustment: TerrainAdjustment::Encapsulate,
944    config: StructureConfigData::Jigsaw(JigsawConfig {
945        start_pool: Identifier::new("minecraft", "trial_chambers/chamber/end"),
946        max_depth: 20i32,
947        use_expansion_hack: false,
948        project_start_to_heightmap: None,
949        start_height: StartHeight::Uniform {
950            min: -40i32,
951            max: -20i32,
952        },
953        max_distance_from_center: 116i32,
954        start_jigsaw_name: None,
955        dimension_padding: DimensionPadding {
956            bottom: 10i32,
957            top: 10i32,
958        },
959        pool_aliases: vec![
960            PoolAlias::RandomGroup {
961                groups: vec![
962                    (
963                        vec![
964                            (
965                                Identifier::new(
966                                    "minecraft",
967                                    "trial_chambers/spawner/contents/ranged",
968                                ),
969                                Identifier::new(
970                                    "minecraft",
971                                    "trial_chambers/spawner/ranged/skeleton",
972                                ),
973                            ),
974                            (
975                                Identifier::new(
976                                    "minecraft",
977                                    "trial_chambers/spawner/contents/slow_ranged",
978                                ),
979                                Identifier::new(
980                                    "minecraft",
981                                    "trial_chambers/spawner/slow_ranged/skeleton",
982                                ),
983                            ),
984                        ],
985                        1i32,
986                    ),
987                    (
988                        vec![
989                            (
990                                Identifier::new(
991                                    "minecraft",
992                                    "trial_chambers/spawner/contents/ranged",
993                                ),
994                                Identifier::new("minecraft", "trial_chambers/spawner/ranged/stray"),
995                            ),
996                            (
997                                Identifier::new(
998                                    "minecraft",
999                                    "trial_chambers/spawner/contents/slow_ranged",
1000                                ),
1001                                Identifier::new(
1002                                    "minecraft",
1003                                    "trial_chambers/spawner/slow_ranged/stray",
1004                                ),
1005                            ),
1006                        ],
1007                        1i32,
1008                    ),
1009                    (
1010                        vec![
1011                            (
1012                                Identifier::new(
1013                                    "minecraft",
1014                                    "trial_chambers/spawner/contents/ranged",
1015                                ),
1016                                Identifier::new(
1017                                    "minecraft",
1018                                    "trial_chambers/spawner/ranged/poison_skeleton",
1019                                ),
1020                            ),
1021                            (
1022                                Identifier::new(
1023                                    "minecraft",
1024                                    "trial_chambers/spawner/contents/slow_ranged",
1025                                ),
1026                                Identifier::new(
1027                                    "minecraft",
1028                                    "trial_chambers/spawner/slow_ranged/poison_skeleton",
1029                                ),
1030                            ),
1031                        ],
1032                        1i32,
1033                    ),
1034                ],
1035            },
1036            PoolAlias::Random {
1037                alias: Identifier::new("minecraft", "trial_chambers/spawner/contents/melee"),
1038                targets: vec![
1039                    (
1040                        Identifier::new("minecraft", "trial_chambers/spawner/melee/zombie"),
1041                        1i32,
1042                    ),
1043                    (
1044                        Identifier::new("minecraft", "trial_chambers/spawner/melee/husk"),
1045                        1i32,
1046                    ),
1047                    (
1048                        Identifier::new("minecraft", "trial_chambers/spawner/melee/spider"),
1049                        1i32,
1050                    ),
1051                ],
1052            },
1053            PoolAlias::Random {
1054                alias: Identifier::new("minecraft", "trial_chambers/spawner/contents/small_melee"),
1055                targets: vec![
1056                    (
1057                        Identifier::new("minecraft", "trial_chambers/spawner/small_melee/slime"),
1058                        1i32,
1059                    ),
1060                    (
1061                        Identifier::new(
1062                            "minecraft",
1063                            "trial_chambers/spawner/small_melee/cave_spider",
1064                        ),
1065                        1i32,
1066                    ),
1067                    (
1068                        Identifier::new(
1069                            "minecraft",
1070                            "trial_chambers/spawner/small_melee/silverfish",
1071                        ),
1072                        1i32,
1073                    ),
1074                    (
1075                        Identifier::new(
1076                            "minecraft",
1077                            "trial_chambers/spawner/small_melee/baby_zombie",
1078                        ),
1079                        1i32,
1080                    ),
1081                ],
1082            },
1083        ],
1084        liquid_settings: LiquidSettingsData::IgnoreWaterlogging,
1085    }),
1086});
1087static STRUCTURE_VILLAGE_DESERT: LazyLock<StructureData> = LazyLock::new(|| StructureData {
1088    key: Identifier::new("minecraft", "village_desert"),
1089    id: OnceLock::new(),
1090    structure_type: Identifier::new("minecraft", "jigsaw"),
1091    allowed_biomes: vec![Identifier::new("minecraft", "desert")],
1092    spawn_overrides: vec![],
1093    step: StructureGenerationStep::SurfaceStructures,
1094    terrain_adjustment: TerrainAdjustment::BeardThin,
1095    config: StructureConfigData::Jigsaw(JigsawConfig {
1096        start_pool: Identifier::new("minecraft", "village/desert/town_centers"),
1097        max_depth: 6i32,
1098        use_expansion_hack: true,
1099        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
1100        start_height: StartHeight::Constant(0i32),
1101        max_distance_from_center: 80i32,
1102        start_jigsaw_name: None,
1103        dimension_padding: DimensionPadding {
1104            bottom: 0i32,
1105            top: 0i32,
1106        },
1107        pool_aliases: vec![],
1108        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
1109    }),
1110});
1111static STRUCTURE_VILLAGE_PLAINS: LazyLock<StructureData> = LazyLock::new(|| StructureData {
1112    key: Identifier::new("minecraft", "village_plains"),
1113    id: OnceLock::new(),
1114    structure_type: Identifier::new("minecraft", "jigsaw"),
1115    allowed_biomes: vec![
1116        Identifier::new("minecraft", "meadow"),
1117        Identifier::new("minecraft", "plains"),
1118    ],
1119    spawn_overrides: vec![],
1120    step: StructureGenerationStep::SurfaceStructures,
1121    terrain_adjustment: TerrainAdjustment::BeardThin,
1122    config: StructureConfigData::Jigsaw(JigsawConfig {
1123        start_pool: Identifier::new("minecraft", "village/plains/town_centers"),
1124        max_depth: 6i32,
1125        use_expansion_hack: true,
1126        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
1127        start_height: StartHeight::Constant(0i32),
1128        max_distance_from_center: 80i32,
1129        start_jigsaw_name: None,
1130        dimension_padding: DimensionPadding {
1131            bottom: 0i32,
1132            top: 0i32,
1133        },
1134        pool_aliases: vec![],
1135        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
1136    }),
1137});
1138static STRUCTURE_VILLAGE_SAVANNA: LazyLock<StructureData> = LazyLock::new(|| StructureData {
1139    key: Identifier::new("minecraft", "village_savanna"),
1140    id: OnceLock::new(),
1141    structure_type: Identifier::new("minecraft", "jigsaw"),
1142    allowed_biomes: vec![Identifier::new("minecraft", "savanna")],
1143    spawn_overrides: vec![],
1144    step: StructureGenerationStep::SurfaceStructures,
1145    terrain_adjustment: TerrainAdjustment::BeardThin,
1146    config: StructureConfigData::Jigsaw(JigsawConfig {
1147        start_pool: Identifier::new("minecraft", "village/savanna/town_centers"),
1148        max_depth: 6i32,
1149        use_expansion_hack: true,
1150        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
1151        start_height: StartHeight::Constant(0i32),
1152        max_distance_from_center: 80i32,
1153        start_jigsaw_name: None,
1154        dimension_padding: DimensionPadding {
1155            bottom: 0i32,
1156            top: 0i32,
1157        },
1158        pool_aliases: vec![],
1159        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
1160    }),
1161});
1162static STRUCTURE_VILLAGE_SNOWY: LazyLock<StructureData> = LazyLock::new(|| StructureData {
1163    key: Identifier::new("minecraft", "village_snowy"),
1164    id: OnceLock::new(),
1165    structure_type: Identifier::new("minecraft", "jigsaw"),
1166    allowed_biomes: vec![Identifier::new("minecraft", "snowy_plains")],
1167    spawn_overrides: vec![],
1168    step: StructureGenerationStep::SurfaceStructures,
1169    terrain_adjustment: TerrainAdjustment::BeardThin,
1170    config: StructureConfigData::Jigsaw(JigsawConfig {
1171        start_pool: Identifier::new("minecraft", "village/snowy/town_centers"),
1172        max_depth: 6i32,
1173        use_expansion_hack: true,
1174        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
1175        start_height: StartHeight::Constant(0i32),
1176        max_distance_from_center: 80i32,
1177        start_jigsaw_name: None,
1178        dimension_padding: DimensionPadding {
1179            bottom: 0i32,
1180            top: 0i32,
1181        },
1182        pool_aliases: vec![],
1183        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
1184    }),
1185});
1186static STRUCTURE_VILLAGE_TAIGA: LazyLock<StructureData> = LazyLock::new(|| StructureData {
1187    key: Identifier::new("minecraft", "village_taiga"),
1188    id: OnceLock::new(),
1189    structure_type: Identifier::new("minecraft", "jigsaw"),
1190    allowed_biomes: vec![Identifier::new("minecraft", "taiga")],
1191    spawn_overrides: vec![],
1192    step: StructureGenerationStep::SurfaceStructures,
1193    terrain_adjustment: TerrainAdjustment::BeardThin,
1194    config: StructureConfigData::Jigsaw(JigsawConfig {
1195        start_pool: Identifier::new("minecraft", "village/taiga/town_centers"),
1196        max_depth: 6i32,
1197        use_expansion_hack: true,
1198        project_start_to_heightmap: Some("WORLD_SURFACE_WG".to_string()),
1199        start_height: StartHeight::Constant(0i32),
1200        max_distance_from_center: 80i32,
1201        start_jigsaw_name: None,
1202        dimension_padding: DimensionPadding {
1203            bottom: 0i32,
1204            top: 0i32,
1205        },
1206        pool_aliases: vec![],
1207        liquid_settings: LiquidSettingsData::ApplyWaterlogging,
1208    }),
1209});
1210pub fn register_structures(registry: &mut StructureRegistry) {
1211    registry.register(&*STRUCTURE_ANCIENT_CITY);
1212    registry.register(&*STRUCTURE_BASTION_REMNANT);
1213    registry.register(&*STRUCTURE_BURIED_TREASURE);
1214    registry.register(&*STRUCTURE_DESERT_PYRAMID);
1215    registry.register(&*STRUCTURE_END_CITY);
1216    registry.register(&*STRUCTURE_FORTRESS);
1217    registry.register(&*STRUCTURE_IGLOO);
1218    registry.register(&*STRUCTURE_JUNGLE_PYRAMID);
1219    registry.register(&*STRUCTURE_MANSION);
1220    registry.register(&*STRUCTURE_MINESHAFT);
1221    registry.register(&*STRUCTURE_MINESHAFT_MESA);
1222    registry.register(&*STRUCTURE_MONUMENT);
1223    registry.register(&*STRUCTURE_NETHER_FOSSIL);
1224    registry.register(&*STRUCTURE_OCEAN_RUIN_COLD);
1225    registry.register(&*STRUCTURE_OCEAN_RUIN_WARM);
1226    registry.register(&*STRUCTURE_PILLAGER_OUTPOST);
1227    registry.register(&*STRUCTURE_RUINED_PORTAL);
1228    registry.register(&*STRUCTURE_RUINED_PORTAL_DESERT);
1229    registry.register(&*STRUCTURE_RUINED_PORTAL_JUNGLE);
1230    registry.register(&*STRUCTURE_RUINED_PORTAL_MOUNTAIN);
1231    registry.register(&*STRUCTURE_RUINED_PORTAL_NETHER);
1232    registry.register(&*STRUCTURE_RUINED_PORTAL_OCEAN);
1233    registry.register(&*STRUCTURE_RUINED_PORTAL_SWAMP);
1234    registry.register(&*STRUCTURE_SHIPWRECK);
1235    registry.register(&*STRUCTURE_SHIPWRECK_BEACHED);
1236    registry.register(&*STRUCTURE_STRONGHOLD);
1237    registry.register(&*STRUCTURE_SWAMP_HUT);
1238    registry.register(&*STRUCTURE_TRAIL_RUINS);
1239    registry.register(&*STRUCTURE_TRIAL_CHAMBERS);
1240    registry.register(&*STRUCTURE_VILLAGE_DESERT);
1241    registry.register(&*STRUCTURE_VILLAGE_PLAINS);
1242    registry.register(&*STRUCTURE_VILLAGE_SAVANNA);
1243    registry.register(&*STRUCTURE_VILLAGE_SNOWY);
1244    registry.register(&*STRUCTURE_VILLAGE_TAIGA);
1245}
1246pub fn vanilla_structures() -> Vec<StructureRef> {
1247    vec![
1248        &*STRUCTURE_ANCIENT_CITY,
1249        &*STRUCTURE_BASTION_REMNANT,
1250        &*STRUCTURE_BURIED_TREASURE,
1251        &*STRUCTURE_DESERT_PYRAMID,
1252        &*STRUCTURE_END_CITY,
1253        &*STRUCTURE_FORTRESS,
1254        &*STRUCTURE_IGLOO,
1255        &*STRUCTURE_JUNGLE_PYRAMID,
1256        &*STRUCTURE_MANSION,
1257        &*STRUCTURE_MINESHAFT,
1258        &*STRUCTURE_MINESHAFT_MESA,
1259        &*STRUCTURE_MONUMENT,
1260        &*STRUCTURE_NETHER_FOSSIL,
1261        &*STRUCTURE_OCEAN_RUIN_COLD,
1262        &*STRUCTURE_OCEAN_RUIN_WARM,
1263        &*STRUCTURE_PILLAGER_OUTPOST,
1264        &*STRUCTURE_RUINED_PORTAL,
1265        &*STRUCTURE_RUINED_PORTAL_DESERT,
1266        &*STRUCTURE_RUINED_PORTAL_JUNGLE,
1267        &*STRUCTURE_RUINED_PORTAL_MOUNTAIN,
1268        &*STRUCTURE_RUINED_PORTAL_NETHER,
1269        &*STRUCTURE_RUINED_PORTAL_OCEAN,
1270        &*STRUCTURE_RUINED_PORTAL_SWAMP,
1271        &*STRUCTURE_SHIPWRECK,
1272        &*STRUCTURE_SHIPWRECK_BEACHED,
1273        &*STRUCTURE_STRONGHOLD,
1274        &*STRUCTURE_SWAMP_HUT,
1275        &*STRUCTURE_TRAIL_RUINS,
1276        &*STRUCTURE_TRIAL_CHAMBERS,
1277        &*STRUCTURE_VILLAGE_DESERT,
1278        &*STRUCTURE_VILLAGE_PLAINS,
1279        &*STRUCTURE_VILLAGE_SAVANNA,
1280        &*STRUCTURE_VILLAGE_SNOWY,
1281        &*STRUCTURE_VILLAGE_TAIGA,
1282    ]
1283}