Pumpkin/crates/pumpkin-data/src/generated/configured_features_generated.rs
2026-08-28 22:32:50 +02:00

4975 lines
383 KiB
Rust

/* This file is generated. Do not edit manually. */
#[allow(
clippy::all,
unused_imports,
dead_code,
clippy::large_stack_frames,
clippy::too_many_lines
)]
fn build_configured_features()
-> std::collections::HashMap<pumpkin_data::configured_feature::ConfiguredFeature, ConfiguredFeature>
{
use crate::block::BlockStateCodec;
use crate::generation::block_predicate::{
AllOfBlockPredicate, AnyOfBlockPredicate, BlockPredicate, HasSturdyFacePredicate,
InsideWorldBoundsBlockPredicate, MatchingBlockTagPredicate, MatchingBlocksBlockPredicate,
MatchingBlocksWrapper, MatchingFluidsBlockPredicate, NotBlockPredicate,
OffsetBlocksBlockPredicate, ReplaceableBlockPredicate, SolidBlockPredicate,
WouldSurviveBlockPredicate,
};
use crate::generation::block_state_provider::{
BlockStateProvider, BlockStateRule, DualNoiseBlockStateProvider, NoiseBlockStateProvider,
NoiseBlockStateProviderBase, NoiseThresholdBlockStateProvider, PillarBlockStateProvider,
RandomizedIntBlockStateProvider, RuleBasedBlockStateProvider, SimpleStateProvider,
WeightedBlockStateProvider,
};
use crate::generation::feature::features::drip_stone::small::SmallDripstoneFeature;
use crate::generation::feature::features::{
bamboo::BambooFeature,
block_column::{BlockColumnFeature, Layer},
end_spike::{EndSpikeFeature, Spike},
fallen_tree::FallenTreeFeature,
geode::GeodeFeature,
nether_forest_vegetation::NetherForestVegetationFeature,
netherrack_replace_blobs::ReplaceBlobsFeature,
ore::{OreFeature, OreTarget},
random_boolean_selector::RandomBooleanFeature,
random_patch::RandomPatchFeature,
random_selector::{RandomFeature, RandomFeatureEntry},
sea_pickle::SeaPickleFeature,
seagrass::SeagrassFeature,
simple_block::SimpleBlockFeature,
simple_random_selector::SimpleRandomFeature,
spring_feature::{BlockWrapper, SpringFeatureFeature},
tree::TreeFeature,
tree::decorator::{
TreeDecorator, alter_ground::AlterGroundTreeDecorator,
attached_to_leaves::AttachedToLeavesTreeDecorator,
attached_to_logs::AttachedToLogsTreeDecorator, beehive::BeehiveTreeDecorator,
cocoa::CocoaTreeDecorator, creaking_heart::CreakingHeartTreeDecorator,
leave_vine::LeavesVineTreeDecorator, pale_moss::PaleMossTreeDecorator,
place_on_ground::PlaceOnGroundTreeDecorator, trunk_vine::TrunkVineTreeDecorator,
},
tree::foliage::{
FoliagePlacer, FoliageType, acacia::AcaciaFoliagePlacer, blob::BlobFoliagePlacer,
bush::BushFoliagePlacer, cherry::CherryFoliagePlacer, dark_oak::DarkOakFoliagePlacer,
fancy::LargeOakFoliagePlacer, jungle::JungleFoliagePlacer,
mega_pine::MegaPineFoliagePlacer, pine::PineFoliagePlacer,
random_spread::RandomSpreadFoliagePlacer, spruce::SpruceFoliagePlacer,
},
tree::root::{
RootPlacer,
mangrove::{AboveRootPlacement, MangroveRootPlacement, MangroveRootPlacer},
},
tree::trunk::{
TrunkPlacer, TrunkType, bending::BendingTrunkPlacer, cherry::CherryTrunkPlacer,
dark_oak::DarkOakTrunkPlacer, fancy::FancyTrunkPlacer, forking::ForkingTrunkPlacer,
giant::GiantTrunkPlacer, mega_jungle::MegaJungleTrunkPlacer,
straight::StraightTrunkPlacer, upwards_branching::UpwardsBranchingTrunkPlacer,
},
vegetation_patch::VegetationPatchFeature,
waterlogged_vegetation_patch::WaterloggedVegetationPatchFeature,
};
use crate::generation::feature::placed_features::{
BiomePlacementModifier, BlockFilterPlacementModifier, CountOnEveryLayerPlacementModifier,
CountPlacementModifier, EnvironmentScanPlacementModifier, Feature,
HeightRangePlacementModifier, HeightmapPlacementModifier, NoiseBasedCountPlacementModifier,
NoiseThresholdCountPlacementModifier, PlacedFeature, PlacedFeatureWrapper,
PlacementModifier, RandomOffsetPlacementModifier, RarityFilterPlacementModifier,
SquarePlacementModifier, SurfaceThresholdFilterPlacementModifier,
SurfaceWaterDepthFilterPlacementModifier,
};
use crate::generation::feature::size::{
FeatureSize, FeatureSizeType, ThreeLayersFeatureSize, TwoLayersFeatureSize,
};
use crate::generation::height_provider::{
HeightProvider, TrapezoidHeightProvider, UniformHeightProvider,
VeryBiasedToBottomHeightProvider,
};
use crate::generation::rule::{
RuleTest, block_match::BlockMatchRuleTest, block_state_match::BlockStateMatchRuleTest,
random_block_match::RandomBlockMatchRuleTest,
random_block_state_match::RandomBlockStateMatchRuleTest, tag_match::TagMatchRuleTest,
};
use pumpkin_data::{Block, BlockDirection};
use pumpkin_util::DoublePerlinNoiseParametersCodec;
use pumpkin_util::HeightMap;
use pumpkin_util::math::int_provider::{
BiasedToBottomIntProvider, ClampedIntProvider, ClampedNormalIntProvider,
ConstantIntProvider, IntProvider, NormalIntProvider, TrapezoidIntProvider,
UniformIntProvider, WeightedEntry, WeightedListIntProvider,
};
use pumpkin_util::math::pool::Weighted;
use pumpkin_util::math::vector3::Vector3;
use pumpkin_util::y_offset::{AboveBottom, Absolute, BelowTop, YOffset};
let mut map = std::collections::HashMap::new();
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Acacia , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: ACACIA_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 2u8 , r#type : TrunkType :: Forking (ForkingTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: ACACIA_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Acacia (AcaciaFoliagePlacer) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::AmethystGeode,
ConfiguredFeature::Geode(Box::new(GeodeFeature {
filling_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::AIR.default_state,
}),
inner_layer_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::AMETHYST_BLOCK.default_state,
}),
alternate_inner_layer_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::BUDDING_AMETHYST.default_state,
}),
middle_layer_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CALCITE.default_state,
}),
outer_layer_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SMOOTH_BASALT.default_state,
}),
inner_placements: vec![
{
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "up".to_string());
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::SMALL_AMETHYST_BUD,
properties: Some(props),
}
},
{
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "up".to_string());
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::MEDIUM_AMETHYST_BUD,
properties: Some(props),
}
},
{
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "up".to_string());
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LARGE_AMETHYST_BUD,
properties: Some(props),
}
},
{
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "up".to_string());
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::AMETHYST_CLUSTER,
properties: Some(props),
}
},
],
cannot_replace: BlockWrapper::Single("#minecraft:features_cannot_replace".to_string()),
invalid_blocks: BlockWrapper::Single("#minecraft:geode_invalid_blocks".to_string()),
filling: 1.7f64,
inner_layer: 2.2f64,
middle_layer: 3.2f64,
outer_layer: 4.2f64,
generate_crack_chance: 0.95f64,
base_crack_size: 2f64,
crack_point_offset: 2i32,
use_potential_placements_chance: 0.35f64,
use_alternate_layer0_chance: 0.083f64,
placements_require_layer0_alternate: true,
outer_wall_distance: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 4i32,
max_inclusive: 6i32,
},
)),
distribution_points: IntProvider::Constant(0),
point_offset: IntProvider::Constant(0),
min_gen_offset: -16i32,
max_gen_offset: 16i32,
noise_multiplier: 0.05f64,
invalid_blocks_threshold: 1i32,
})),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::AzaleaTree,
ConfiguredFeature::Tree(Box::new(TreeFeature {
trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::OAK_LOG,
properties: Some(props),
}
.get_state()
},
}),
trunk_placer: TrunkPlacer {
base_height: 4u8,
height_rand_a: 2u8,
height_rand_b: 0u8,
r#type: TrunkType::Bending(BendingTrunkPlacer {
min_height_for_leaves: 3u32,
bend_length: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 2i32,
},
)),
}),
},
foliage_provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("distance".to_string(), "7".to_string());
props.insert("persistent".to_string(), "false".to_string());
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::AZALEA_LEAVES,
properties: Some(props),
}
.get_state()
},
weight: 3i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("distance".to_string(), "7".to_string());
props.insert("persistent".to_string(), "false".to_string());
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::FLOWERING_AZALEA_LEAVES,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
foliage_placer: FoliagePlacer {
radius: IntProvider::Constant(3i32),
offset: IntProvider::Constant(0i32),
r#type: FoliageType::RandomSpread(RandomSpreadFoliagePlacer {
foliage_height: IntProvider::Constant(2i32),
leaf_placement_attempts: 50i32,
}),
},
minimum_size: FeatureSize {
min_clipped_height: None,
r#type: FeatureSizeType::TwoLayersFeatureSize(TwoLayersFeatureSize {
limit: 1u8,
lower_size: 0u8,
upper_size: 1u8,
}),
},
ignore_vines: false,
below_trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::ROOTED_DIRT.default_state,
}),
decorators: vec![],
root_placer: None,
})),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BambooNoPodzol,
ConfiguredFeature::Bamboo(BambooFeature { probability: 0f32 }),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BambooSomePodzol,
ConfiguredFeature::Bamboo(BambooFeature {
probability: 0.2f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BambooVegetation,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakChecked,
),
chance: 0.05f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::JungleBush,
),
chance: 0.15f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::MegaJungleTreeChecked,
),
chance: 0.7f32,
},
],
default: Box::new(PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::GrassJungle,
),
placement: vec![
PlacementModifier::Count(CountPlacementModifier {
count: IntProvider::Constant(32i32),
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -7i32,
max_inclusive: 7i32,
plateau: 0i32,
},
)),
y_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -3i32,
max_inclusive: 3i32,
plateau: 0i32,
},
)),
}),
PlacementModifier::BlockPredicateFilter(BlockFilterPlacementModifier {
predicate: BlockPredicate::AllOf(AllOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
BlockPredicate::Not(NotBlockPredicate {
predicate: Box::new(BlockPredicate::MatchingBlocks(
MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate {
offset: Some(Vector3::new(0i32, -1i32, 0i32)),
},
blocks: MatchingBlocksWrapper::Single(
"minecraft:podzol".to_string(),
),
},
)),
}),
],
}),
}),
],
})),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BasaltBlobs,
ConfiguredFeature::NetherrackReplaceBlobs(ReplaceBlobsFeature {
target: pumpkin_data::Block::NETHERRACK.default_state,
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::BASALT,
properties: Some(props),
}
.get_state()
},
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 3i32,
max_inclusive: 7i32,
})),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BasaltPillar,
ConfiguredFeature::BasaltPillar(
crate::generation::feature::features::basalt_pillar::BasaltPillarFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BerryBush,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::SWEET_BERRY_BUSH,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Birch , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: BirchBees0002 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.002f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: BirchBees0002LeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.002f32 }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: BirchBees002 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.02f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: BirchBees005 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.05f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: BirchLeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BirchTall,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenSuperBirchTree,
),
chance: 0.00625f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SuperBirchBees0002,
),
chance: 0.5f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenBirchTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::BirchBees0002,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BlackstoneBlobs,
ConfiguredFeature::NetherrackReplaceBlobs(ReplaceBlobsFeature {
target: pumpkin_data::Block::NETHERRACK.default_state,
state: pumpkin_data::Block::BLACKSTONE.default_state,
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 3i32,
max_inclusive: 7i32,
})),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BlueIce,
ConfiguredFeature::BlueIce(
crate::generation::feature::features::blue_ice::BlueIceFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BonusChest,
ConfiguredFeature::BonusChest(
crate::generation::feature::features::bonus_chest::BonusChestFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::BrownMushroom,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::BROWN_MUSHROOM.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Bush,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::BUSH.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Cactus,
ConfiguredFeature::BlockColumn(BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::BiasedToBottom(
BiasedToBottomIntProvider {
min_inclusive: 1i32,
max_inclusive: 3i32,
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CACTUS,
properties: Some(props),
}
.get_state()
},
}),
},
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Constant(0i32),
weight: 3i32,
},
WeightedEntry {
data: IntProvider::Constant(1i32),
weight: 1i32,
},
],
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CACTUS_FLOWER.default_state,
}),
},
],
direction: BlockDirection::Up,
allowed_placement: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
prioritize_tip: false,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CaveVine,
ConfiguredFeature::BlockColumn(BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 19i32,
},
)),
weight: 2i32,
},
WeightedEntry {
data: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 2i32,
},
)),
weight: 3i32,
},
WeightedEntry {
data: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 6i32,
},
)),
weight: 10i32,
},
],
},
)),
provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("berries".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES_PLANT,
properties: Some(props),
}
.get_state()
},
weight: 4i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("berries".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES_PLANT,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
},
Layer {
height: IntProvider::Constant(1i32),
provider: BlockStateProvider::RandomizedInt(RandomizedIntBlockStateProvider {
source: Box::new(BlockStateProvider::Weighted(
WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
props
.insert("berries".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES,
properties: Some(props),
}
.get_state()
},
weight: 4i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
props.insert("berries".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
},
)),
property: "age".to_string(),
values: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 23i32,
max_inclusive: 25i32,
},
)),
}),
},
],
direction: BlockDirection::Down,
allowed_placement: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
prioritize_tip: true,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CaveVineInMoss,
ConfiguredFeature::BlockColumn(BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 3i32,
},
)),
weight: 5i32,
},
WeightedEntry {
data: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 7i32,
},
)),
weight: 1i32,
},
],
},
)),
provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("berries".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES_PLANT,
properties: Some(props),
}
.get_state()
},
weight: 4i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("berries".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES_PLANT,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
},
Layer {
height: IntProvider::Constant(1i32),
provider: BlockStateProvider::RandomizedInt(RandomizedIntBlockStateProvider {
source: Box::new(BlockStateProvider::Weighted(
WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
props
.insert("berries".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES,
properties: Some(props),
}
.get_state()
},
weight: 4i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
props.insert("berries".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::CAVE_VINES,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
},
)),
property: "age".to_string(),
values: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 23i32,
max_inclusive: 25i32,
},
)),
}),
},
],
direction: BlockDirection::Down,
allowed_placement: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
prioritize_tip: true,
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Cherry , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: CHERRY_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 7u8 , height_rand_a : 1u8 , height_rand_b : 0u8 , r#type : TrunkType :: Cherry (CherryTrunkPlacer { count : IntProvider :: Object (NormalIntProvider :: WeightedList (WeightedListIntProvider { distribution : vec ! [WeightedEntry { data : IntProvider :: Constant (1i32) , weight : 1i32 } , WeightedEntry { data : IntProvider :: Constant (2i32) , weight : 1i32 } , WeightedEntry { data : IntProvider :: Constant (3i32) , weight : 1i32 }] })) , horizontal_length : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 2i32 , max_inclusive : 4i32 })) , start_offset_from_top : UniformIntProvider { min_inclusive : - 4i32 , max_inclusive : - 3i32 } , end_offset_from_top : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : - 1i32 , max_inclusive : 0i32 })) , }) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: CHERRY_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (4i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Cherry (CherryFoliagePlacer { height : IntProvider :: Constant (5i32) , wide_bottom_layer_hole_chance : 0.25f32 , corner_hole_chance : 0.25f32 , hanging_leaves_chance : 0.16666667f32 , hanging_leaves_extension_chance : 0.33333334f32 , }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: CherryBees005 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: CHERRY_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 7u8 , height_rand_a : 1u8 , height_rand_b : 0u8 , r#type : TrunkType :: Cherry (CherryTrunkPlacer { count : IntProvider :: Object (NormalIntProvider :: WeightedList (WeightedListIntProvider { distribution : vec ! [WeightedEntry { data : IntProvider :: Constant (1i32) , weight : 1i32 } , WeightedEntry { data : IntProvider :: Constant (2i32) , weight : 1i32 } , WeightedEntry { data : IntProvider :: Constant (3i32) , weight : 1i32 }] })) , horizontal_length : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 2i32 , max_inclusive : 4i32 })) , start_offset_from_top : UniformIntProvider { min_inclusive : - 4i32 , max_inclusive : - 3i32 } , end_offset_from_top : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : - 1i32 , max_inclusive : 0i32 })) , }) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: CHERRY_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (4i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Cherry (CherryFoliagePlacer { height : IntProvider :: Constant (5i32) , wide_bottom_layer_hole_chance : 0.25f32 , corner_hole_chance : 0.25f32 , hanging_leaves_chance : 0.16666667f32 , hanging_leaves_extension_chance : 0.33333334f32 , }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.05f32 })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::ChorusPlant,
ConfiguredFeature::ChorusPlant(
crate::generation::feature::features::chorus_plant::ChorusPlantFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::ClayPoolWithDripleaves,
ConfiguredFeature::WaterloggedVegetationPatch(
waterlogged_vegetation_patch::WaterloggedVegetationPatchFeature {
base: vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_LUSH_GROUND_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CLAY.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::Dripleaf,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor,
depth: IntProvider::Constant(3i32),
extra_bottom_block_chance: 0.8f32,
vertical_range: 5i32,
vegetation_chance: 0.1f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 4i32,
max_inclusive: 7i32,
},
)),
extra_edge_column_chance: 0.7f32,
},
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::ClayWithDripleaves,
ConfiguredFeature::VegetationPatch(vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_LUSH_GROUND_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CLAY.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::Dripleaf,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor,
depth: IntProvider::Constant(3i32),
extra_bottom_block_chance: 0.8f32,
vertical_range: 2i32,
vegetation_chance: 0.05f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 4i32,
max_inclusive: 7i32,
})),
extra_edge_column_chance: 0.7f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CrimsonForestVegetation,
ConfiguredFeature::NetherForestVegetation(NetherForestVegetationFeature {
state_provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::CRIMSON_ROOTS.default_state,
weight: 87i32,
},
Weighted {
data: pumpkin_data::Block::CRIMSON_FUNGUS.default_state,
weight: 11i32,
},
Weighted {
data: pumpkin_data::Block::WARPED_FUNGUS.default_state,
weight: 1i32,
},
],
}),
spread_width: 8i32,
spread_height: 4i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CrimsonForestVegetationBonemeal,
ConfiguredFeature::NetherForestVegetation(NetherForestVegetationFeature {
state_provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::CRIMSON_ROOTS.default_state,
weight: 87i32,
},
Weighted {
data: pumpkin_data::Block::CRIMSON_FUNGUS.default_state,
weight: 11i32,
},
Weighted {
data: pumpkin_data::Block::WARPED_FUNGUS.default_state,
weight: 1i32,
},
],
}),
spread_width: 3i32,
spread_height: 1i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CrimsonFungus,
ConfiguredFeature::HugeFungus(
crate::generation::feature::features::huge_fungus::HugeFungusFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CrimsonFungusPlanted,
ConfiguredFeature::HugeFungus(
crate::generation::feature::features::huge_fungus::HugeFungusFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::CrimsonRoots,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CRIMSON_ROOTS.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DarkForestVegetation,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::HugeBrownMushroom,
),
placement: vec![],
}),
chance: 0.025f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::HugeRedMushroom,
),
placement: vec![],
}),
chance: 0.05f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::DarkOakLeafLitter,
),
chance: 0.6666667f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenBirchTree,
),
chance: 0.0025f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::BirchLeafLitter,
),
chance: 0.2f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenOakTree,
),
chance: 0.0125f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakLeafLitter,
),
chance: 0.1f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakLeafLitter,
)),
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: DarkOak , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: DARK_OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 6u8 , height_rand_a : 2u8 , height_rand_b : 1u8 , r#type : TrunkType :: DarkOak (DarkOakTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: DARK_OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: DarkOak (DarkOakFoliagePlacer) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: ThreeLayersFeatureSize (ThreeLayersFeatureSize { limit : 1u8 , upper_limit : 1u8 , lower_size : 0u8 , middle_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: DarkOakLeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: DARK_OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 6u8 , height_rand_a : 2u8 , height_rand_b : 1u8 , r#type : TrunkType :: DarkOak (DarkOakTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: DARK_OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: DarkOak (DarkOakFoliagePlacer) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: ThreeLayersFeatureSize (ThreeLayersFeatureSize { limit : 1u8 , upper_limit : 1u8 , lower_size : 0u8 , middle_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DeadBush,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::DEAD_BUSH.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Delta,
ConfiguredFeature::DeltaFeature(
crate::generation::feature::features::delta_feature::DeltaFeatureFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DesertWell,
ConfiguredFeature::DesertWell(
crate::generation::feature::features::desert_well::DesertWellFeature,
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DiskClay,
ConfiguredFeature::Disk(crate::generation::feature::features::disk::DiskFeature {
state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CLAY.default_state,
}),
target: BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Multiple(vec![
"minecraft:dirt".to_string(),
"minecraft:clay".to_string(),
]),
}),
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 3i32,
})),
half_height: 1i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DiskGrass,
ConfiguredFeature::Disk(crate::generation::feature::features::disk::DiskFeature {
state_provider: BlockStateProvider::Rule(RuleBasedBlockStateProvider {
fallback: Some(Box::new(BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::DIRT.default_state,
}))),
rules: vec![BlockStateRule {
if_true: BlockPredicate::Not(NotBlockPredicate {
predicate: Box::new(BlockPredicate::AnyOf(AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::Solid(SolidBlockPredicate {
offset: OffsetBlocksBlockPredicate {
offset: Some(Vector3::new(0i32, 1i32, 0i32)),
},
}),
BlockPredicate::MatchingFluids(MatchingFluidsBlockPredicate {
offset: OffsetBlocksBlockPredicate {
offset: Some(Vector3::new(0i32, 1i32, 0i32)),
},
fluids: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
}),
],
})),
}),
then: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("snowy".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::GRASS_BLOCK,
properties: Some(props),
}
.get_state()
},
}),
}],
}),
target: BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Multiple(vec![
"minecraft:dirt".to_string(),
"minecraft:mud".to_string(),
]),
}),
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 6i32,
})),
half_height: 2i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DiskGravel,
ConfiguredFeature::Disk(crate::generation::feature::features::disk::DiskFeature {
state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::GRAVEL.default_state,
}),
target: BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Multiple(vec![
"minecraft:dirt".to_string(),
"minecraft:grass_block".to_string(),
]),
}),
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 5i32,
})),
half_height: 2i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DiskSand,
ConfiguredFeature::Disk(crate::generation::feature::features::disk::DiskFeature {
state_provider: BlockStateProvider::Rule(RuleBasedBlockStateProvider {
fallback: Some(Box::new(BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SAND.default_state,
}))),
rules: vec![BlockStateRule {
if_true: BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate {
offset: Some(Vector3::new(0i32, -1i32, 0i32)),
},
blocks: MatchingBlocksWrapper::Single("minecraft:air".to_string()),
}),
then: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SANDSTONE.default_state,
}),
}],
}),
target: BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Multiple(vec![
"minecraft:dirt".to_string(),
"minecraft:grass_block".to_string(),
]),
}),
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 6i32,
})),
half_height: 2i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Dripleaf,
ConfiguredFeature::SimpleRandomSelector(SimpleRandomFeature {
features: vec![
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::SimpleBlock(
SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("half".to_string(), "lower".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::SMALL_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("half".to_string(), "lower".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::SMALL_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("half".to_string(), "lower".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::SMALL_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("half".to_string(), "lower".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::SMALL_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
schedule_tick: None,
},
))),
placement: vec![],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::BlockColumn(
BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Object(
NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 4i32,
},
),
),
weight: 2i32,
},
WeightedEntry {
data: IntProvider::Constant(0i32),
weight: 1i32,
},
],
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF_STEM,
properties: Some(props),
}
.get_state()
},
}),
},
Layer {
height: IntProvider::Constant(1i32),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("tilt".to_string(), "none".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
}),
},
],
direction: BlockDirection::Up,
allowed_placement: BlockPredicate::AnyOf(AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
}),
],
}),
prioritize_tip: true,
},
))),
placement: vec![],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::BlockColumn(
BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Object(
NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 4i32,
},
),
),
weight: 2i32,
},
WeightedEntry {
data: IntProvider::Constant(0i32),
weight: 1i32,
},
],
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF_STEM,
properties: Some(props),
}
.get_state()
},
}),
},
Layer {
height: IntProvider::Constant(1i32),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("tilt".to_string(), "none".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
}),
},
],
direction: BlockDirection::Up,
allowed_placement: BlockPredicate::AnyOf(AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
}),
],
}),
prioritize_tip: true,
},
))),
placement: vec![],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::BlockColumn(
BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Object(
NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 4i32,
},
),
),
weight: 2i32,
},
WeightedEntry {
data: IntProvider::Constant(0i32),
weight: 1i32,
},
],
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF_STEM,
properties: Some(props),
}
.get_state()
},
}),
},
Layer {
height: IntProvider::Constant(1i32),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("tilt".to_string(), "none".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
}),
},
],
direction: BlockDirection::Up,
allowed_placement: BlockPredicate::AnyOf(AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
}),
],
}),
prioritize_tip: true,
},
))),
placement: vec![],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::BlockColumn(
BlockColumnFeature {
layers: vec![
Layer {
height: IntProvider::Object(NormalIntProvider::WeightedList(
WeightedListIntProvider {
distribution: vec![
WeightedEntry {
data: IntProvider::Object(
NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 0i32,
max_inclusive: 4i32,
},
),
),
weight: 2i32,
},
WeightedEntry {
data: IntProvider::Constant(0i32),
weight: 1i32,
},
],
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF_STEM,
properties: Some(props),
}
.get_state()
},
}),
},
Layer {
height: IntProvider::Constant(1i32),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("tilt".to_string(), "none".to_string());
props.insert(
"waterlogged".to_string(),
"false".to_string(),
);
BlockStateCodec {
name: &pumpkin_data::Block::BIG_DRIPLEAF,
properties: Some(props),
}
.get_state()
},
}),
},
],
direction: BlockDirection::Up,
allowed_placement: BlockPredicate::AnyOf(AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
}),
],
}),
prioritize_tip: true,
},
))),
placement: vec![],
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DripstoneCluster,
ConfiguredFeature::DripstoneCluster(
crate::generation::feature::features::drip_stone::cluster::DripstoneClusterFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::DryGrass,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::SHORT_DRY_GRASS.default_state,
weight: 1i32,
},
Weighted {
data: pumpkin_data::Block::TALL_DRY_GRASS.default_state,
weight: 1i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::EndGatewayDelayed,
ConfiguredFeature::EndGateway(
crate::generation::feature::features::end_gateway::EndGatewayFeature {
exit: None,
exact: false,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::EndGatewayReturn,
ConfiguredFeature::EndGateway(
crate::generation::feature::features::end_gateway::EndGatewayFeature {
exit: Some(pumpkin_util::math::position::BlockPos::new(
100i32, 50i32, 0i32,
)),
exact: true,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::EndIsland,
ConfiguredFeature::EndIsland(
crate::generation::feature::features::end_island::EndIslandFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::EndPlatform,
ConfiguredFeature::EndPlatform(
crate::generation::feature::features::end_platform::EndPlatformFeature,
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::EndSpike,
ConfiguredFeature::EndSpike(EndSpikeFeature {
crystal_invulnerable: false,
spikes: vec![],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FallenBirchTree,
ConfiguredFeature::FallenTree(FallenTreeFeature {
trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::BIRCH_LOG,
properties: Some(props),
}
.get_state()
},
}),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FallenJungleTree,
ConfiguredFeature::FallenTree(FallenTreeFeature {
trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::JUNGLE_LOG,
properties: Some(props),
}
.get_state()
},
}),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FallenOakTree,
ConfiguredFeature::FallenTree(FallenTreeFeature {
trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::OAK_LOG,
properties: Some(props),
}
.get_state()
},
}),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FallenSpruceTree,
ConfiguredFeature::FallenTree(FallenTreeFeature {
trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::SPRUCE_LOG,
properties: Some(props),
}
.get_state()
},
}),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FallenSuperBirchTree,
ConfiguredFeature::FallenTree(FallenTreeFeature {
trunk_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::BIRCH_LOG,
properties: Some(props),
}
.get_state()
},
}),
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: FancyOak , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 3u8 , height_rand_a : 11u8 , height_rand_b : 0u8 , r#type : TrunkType :: Fancy (FancyTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (4i32) , r#type : FoliageType :: Fancy (LargeOakFoliagePlacer { height : 4i32 }) } , minimum_size : FeatureSize { min_clipped_height : Some (4u8) , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: FancyOakBees , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 3u8 , height_rand_a : 11u8 , height_rand_b : 0u8 , r#type : TrunkType :: Fancy (FancyTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (4i32) , r#type : FoliageType :: Fancy (LargeOakFoliagePlacer { height : 4i32 }) } , minimum_size : FeatureSize { min_clipped_height : Some (4u8) , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 1f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: FancyOakBees0002LeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 3u8 , height_rand_a : 11u8 , height_rand_b : 0u8 , r#type : TrunkType :: Fancy (FancyTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (4i32) , r#type : FoliageType :: Fancy (LargeOakFoliagePlacer { height : 4i32 }) } , minimum_size : FeatureSize { min_clipped_height : Some (4u8) , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.002f32 }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: FancyOakBees002 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 3u8 , height_rand_a : 11u8 , height_rand_b : 0u8 , r#type : TrunkType :: Fancy (FancyTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (4i32) , r#type : FoliageType :: Fancy (LargeOakFoliagePlacer { height : 4i32 }) } , minimum_size : FeatureSize { min_clipped_height : Some (4u8) , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.02f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: FancyOakBees005 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 3u8 , height_rand_a : 11u8 , height_rand_b : 0u8 , r#type : TrunkType :: Fancy (FancyTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (4i32) , r#type : FoliageType :: Fancy (LargeOakFoliagePlacer { height : 4i32 }) } , minimum_size : FeatureSize { min_clipped_height : Some (4u8) , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.05f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: FancyOakLeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 3u8 , height_rand_a : 11u8 , height_rand_b : 0u8 , r#type : TrunkType :: Fancy (FancyTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (4i32) , r#type : FoliageType :: Fancy (LargeOakFoliagePlacer { height : 4i32 }) } , minimum_size : FeatureSize { min_clipped_height : Some (4u8) , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FireflyBush,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::FIREFLY_BUSH.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerCherry,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PINK_PETALS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerDefault,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::POPPY.default_state,
weight: 2i32,
},
Weighted {
data: pumpkin_data::Block::DANDELION.default_state,
weight: 1i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerFlowerForest,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::NoiseProvider(NoiseBlockStateProvider {
base: NoiseBlockStateProviderBase {
seed: 2345i64,
noise: DoublePerlinNoiseParametersCodec {
first_octave: 0i32,
amplitudes: vec![1f64],
amplitude: 0.8333333333333333f64,
},
scale: 0.020833334f32,
},
states: vec![
pumpkin_data::Block::DANDELION.default_state,
pumpkin_data::Block::POPPY.default_state,
pumpkin_data::Block::ALLIUM.default_state,
pumpkin_data::Block::AZURE_BLUET.default_state,
pumpkin_data::Block::RED_TULIP.default_state,
pumpkin_data::Block::ORANGE_TULIP.default_state,
pumpkin_data::Block::WHITE_TULIP.default_state,
pumpkin_data::Block::PINK_TULIP.default_state,
pumpkin_data::Block::OXEYE_DAISY.default_state,
pumpkin_data::Block::CORNFLOWER.default_state,
pumpkin_data::Block::LILY_OF_THE_VALLEY.default_state,
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerMeadow,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::DualNoise(DualNoiseBlockStateProvider {
base: NoiseBlockStateProvider {
base: NoiseBlockStateProviderBase {
seed: 2345i64,
noise: DoublePerlinNoiseParametersCodec {
first_octave: -3i32,
amplitudes: vec![1f64],
amplitude: 0.8333333333333333f64,
},
scale: 1f32,
},
states: vec![
{
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::TALL_GRASS,
properties: Some(props),
}
.get_state()
},
pumpkin_data::Block::ALLIUM.default_state,
pumpkin_data::Block::POPPY.default_state,
pumpkin_data::Block::AZURE_BLUET.default_state,
pumpkin_data::Block::DANDELION.default_state,
pumpkin_data::Block::CORNFLOWER.default_state,
pumpkin_data::Block::OXEYE_DAISY.default_state,
pumpkin_data::Block::SHORT_GRASS.default_state,
],
},
variety: [1u32, 3u32],
slow_noise: DoublePerlinNoiseParametersCodec {
first_octave: -10i32,
amplitudes: vec![1f64],
amplitude: 0.8333333333333333f64,
},
slow_scale: 1f64,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerPaleGarden,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CLOSED_EYEBLOSSOM.default_state,
}),
schedule_tick: Some(true),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerPlain,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::NoiseThreshold(NoiseThresholdBlockStateProvider {
base: NoiseBlockStateProviderBase {
seed: 2345i64,
noise: DoublePerlinNoiseParametersCodec {
first_octave: 0i32,
amplitudes: vec![1f64],
amplitude: 0.8333333333333333f64,
},
scale: 0.005f32,
},
threshold: -0.8f32,
high_chance: 0.33333334f32,
default_state: pumpkin_data::Block::DANDELION.default_state,
low_states: vec![
pumpkin_data::Block::ORANGE_TULIP.default_state,
pumpkin_data::Block::RED_TULIP.default_state,
pumpkin_data::Block::PINK_TULIP.default_state,
pumpkin_data::Block::WHITE_TULIP.default_state,
],
high_states: vec![
pumpkin_data::Block::POPPY.default_state,
pumpkin_data::Block::AZURE_BLUET.default_state,
pumpkin_data::Block::OXEYE_DAISY.default_state,
pumpkin_data::Block::CORNFLOWER.default_state,
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FlowerSwamp,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::BLUE_ORCHID.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::ForestFlowers,
ConfiguredFeature::SimpleRandomSelector(SimpleRandomFeature {
features: vec![
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::SimpleBlock(
SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LILAC,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
},
))),
placement: vec![
PlacementModifier::Count(CountPlacementModifier {
count: IntProvider::Constant(96i32),
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -7i32,
max_inclusive: 7i32,
plateau: 0i32,
},
)),
y_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -3i32,
max_inclusive: 3i32,
plateau: 0i32,
},
)),
}),
PlacementModifier::BlockPredicateFilter(BlockFilterPlacementModifier {
predicate: BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
}),
],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::SimpleBlock(
SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::ROSE_BUSH,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
},
))),
placement: vec![
PlacementModifier::Count(CountPlacementModifier {
count: IntProvider::Constant(96i32),
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -7i32,
max_inclusive: 7i32,
plateau: 0i32,
},
)),
y_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -3i32,
max_inclusive: 3i32,
plateau: 0i32,
},
)),
}),
PlacementModifier::BlockPredicateFilter(BlockFilterPlacementModifier {
predicate: BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
}),
],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::SimpleBlock(
SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PEONY,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
},
))),
placement: vec![
PlacementModifier::Count(CountPlacementModifier {
count: IntProvider::Constant(96i32),
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -7i32,
max_inclusive: 7i32,
plateau: 0i32,
},
)),
y_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -3i32,
max_inclusive: 3i32,
plateau: 0i32,
},
)),
}),
PlacementModifier::BlockPredicateFilter(BlockFilterPlacementModifier {
predicate: BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
}),
],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::SimpleBlock(
SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::LILY_OF_THE_VALLEY.default_state,
}),
schedule_tick: None,
},
))),
placement: vec![
PlacementModifier::Count(CountPlacementModifier {
count: IntProvider::Constant(96i32),
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -7i32,
max_inclusive: 7i32,
plateau: 0i32,
},
)),
y_spread: IntProvider::Object(NormalIntProvider::Trapezoid(
TrapezoidIntProvider {
min_inclusive: -3i32,
max_inclusive: 3i32,
plateau: 0i32,
},
)),
}),
PlacementModifier::BlockPredicateFilter(BlockFilterPlacementModifier {
predicate: BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
}),
],
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::ForestRock,
ConfiguredFeature::ForestRock(
crate::generation::feature::features::forest_rock::ForestRockFeature {
state: pumpkin_data::Block::MOSSY_COBBLESTONE.default_state,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FossilCoal,
ConfiguredFeature::Fossil(
crate::generation::feature::features::fossil::FossilFeature {
fossil_structures: vec![
"minecraft:fossil/spine_1",
"minecraft:fossil/spine_2",
"minecraft:fossil/spine_3",
"minecraft:fossil/spine_4",
"minecraft:fossil/skull_1",
"minecraft:fossil/skull_2",
"minecraft:fossil/skull_3",
"minecraft:fossil/skull_4",
],
overlay_structures: vec![
"minecraft:fossil/spine_1_coal",
"minecraft:fossil/spine_2_coal",
"minecraft:fossil/spine_3_coal",
"minecraft:fossil/spine_4_coal",
"minecraft:fossil/skull_1_coal",
"minecraft:fossil/skull_2_coal",
"minecraft:fossil/skull_3_coal",
"minecraft:fossil/skull_4_coal",
],
fossil_processor:
crate::generation::feature::features::fossil::FossilProcessor::FossilRot,
overlay_processor:
crate::generation::feature::features::fossil::FossilProcessor::Coal,
max_empty_corners_allowed: 4u8,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FossilDiamonds,
ConfiguredFeature::Fossil(
crate::generation::feature::features::fossil::FossilFeature {
fossil_structures: vec![
"minecraft:fossil/spine_1",
"minecraft:fossil/spine_2",
"minecraft:fossil/spine_3",
"minecraft:fossil/spine_4",
"minecraft:fossil/skull_1",
"minecraft:fossil/skull_2",
"minecraft:fossil/skull_3",
"minecraft:fossil/skull_4",
],
overlay_structures: vec![
"minecraft:fossil/spine_1_coal",
"minecraft:fossil/spine_2_coal",
"minecraft:fossil/spine_3_coal",
"minecraft:fossil/spine_4_coal",
"minecraft:fossil/skull_1_coal",
"minecraft:fossil/skull_2_coal",
"minecraft:fossil/skull_3_coal",
"minecraft:fossil/skull_4_coal",
],
fossil_processor:
crate::generation::feature::features::fossil::FossilProcessor::FossilRot,
overlay_processor:
crate::generation::feature::features::fossil::FossilProcessor::Diamonds,
max_empty_corners_allowed: 4u8,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::FreezeTopLayer,
ConfiguredFeature::FreezeTopLayer(
crate::generation::feature::features::freeze_top_layer::FreezeTopLayerFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::GlowLichen,
ConfiguredFeature::MultifaceGrowth(
crate::generation::feature::features::multiface_growth::MultifaceGrowthFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::GlowstoneExtra,
ConfiguredFeature::GlowstoneBlob(
crate::generation::feature::features::glowstone_blob::GlowstoneBlobFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Grass,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SHORT_GRASS.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::GrassJungle,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::SHORT_GRASS.default_state,
weight: 3i32,
},
Weighted {
data: pumpkin_data::Block::FERN.default_state,
weight: 1i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::HugeBrownMushroom,
ConfiguredFeature::HugeBrownMushroom(
crate::generation::feature::features::huge_brown_mushroom::HugeBrownMushroomFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::HugeRedMushroom,
ConfiguredFeature::HugeRedMushroom(
crate::generation::feature::features::huge_red_mushroom::HugeRedMushroomFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::IcePatch,
ConfiguredFeature::Disk(crate::generation::feature::features::disk::DiskFeature {
state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::PACKED_ICE.default_state,
}),
target: BlockPredicate::MatchingBlocks(MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Multiple(vec![
"minecraft:dirt".to_string(),
"minecraft:grass_block".to_string(),
"minecraft:podzol".to_string(),
"minecraft:coarse_dirt".to_string(),
"minecraft:mycelium".to_string(),
"minecraft:snow_block".to_string(),
"minecraft:ice".to_string(),
]),
}),
radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 3i32,
})),
half_height: 1i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::IceSpike,
ConfiguredFeature::IceSpike(
crate::generation::feature::features::ice_spike::IceSpikeFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::IcebergBlue,
ConfiguredFeature::Iceberg(
crate::generation::feature::features::iceberg::IcebergFeature {
main_block: BlockStateCodec {
name: &pumpkin_data::Block::BLUE_ICE,
properties: None,
},
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::IcebergPacked,
ConfiguredFeature::Iceberg(
crate::generation::feature::features::iceberg::IcebergFeature {
main_block: BlockStateCodec {
name: &pumpkin_data::Block::PACKED_ICE,
properties: None,
},
},
),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: JungleBush , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 1u8 , height_rand_a : 0u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (1i32) , r#type : FoliageType :: Bush (BushFoliagePlacer { height : 2i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 0u8 , lower_size : 0u8 , upper_size : 0u8 , }) } , ignore_vines : false , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: JungleTree , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 8u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Cocoa (CocoaTreeDecorator { }) , TreeDecorator :: TrunkVine (TrunkVineTreeDecorator) , TreeDecorator :: LeaveVine (LeavesVineTreeDecorator { probability : 0.25f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: JungleTreeNoVine , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 8u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Kelp,
ConfiguredFeature::Kelp(crate::generation::feature::features::kelp::KelpFeature {}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::LakeLava,
ConfiguredFeature::Lake(crate::generation::feature::features::lake::LakeFeature {
fluid: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("level".to_string(), "0".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LAVA,
properties: Some(props),
}
.get_state()
},
}),
barrier: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::STONE.default_state,
}),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::LargeBasaltColumns,
ConfiguredFeature::BasaltColumns(
crate::generation::feature::features::basalt_columns::BasaltColumnsFeature {
height: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 5i32,
max_inclusive: 10i32,
})),
reach: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 3i32,
})),
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::LargeDripstone,
ConfiguredFeature::LargeDripstone(
crate::generation::feature::features::drip_stone::large::LargeDripstoneFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::LargeFern,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LARGE_FERN,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::LeafLitter,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("segment_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("segment_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("segment_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("segment_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("segment_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("segment_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("segment_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("segment_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("segment_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("segment_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("segment_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("segment_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LEAF_LITTER,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::LushCavesClay,
ConfiguredFeature::RandomBooleanSelector(RandomBooleanFeature {
feature_true: Box::new(PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::ClayWithDripleaves,
),
placement: vec![],
})),
feature_false: Box::new(PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::ClayPoolWithDripleaves,
),
placement: vec![],
})),
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Mangrove , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MANGROVE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 2u8 , height_rand_a : 1u8 , height_rand_b : 4u8 , r#type : TrunkType :: UpwardsBranching (UpwardsBranchingTrunkPlacer { extra_branch_steps : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 1i32 , max_inclusive : 4i32 })) , place_branch_per_log_probability : 0.5f32 , extra_branch_length : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 0i32 , max_inclusive : 1i32 })) , can_grow_through : & pumpkin_data :: tag :: Block :: MINECRAFT_MANGROVE_LOGS_CAN_GROW_THROUGH . 1 , }) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MANGROVE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (3i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: RandomSpread (RandomSpreadFoliagePlacer { foliage_height : IntProvider :: Constant (2i32) , leaf_placement_attempts : 70i32 , }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 2u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: LeaveVine (LeavesVineTreeDecorator { probability : 0.125f32 }) , TreeDecorator :: AttachedToLeaves (AttachedToLeavesTreeDecorator { }) , TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.01f32 })] , root_placer : Some (RootPlacer :: Mangrove (MangroveRootPlacer { trunk_offset_y : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 1i32 , max_inclusive : 3i32 })) , root_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MANGROVE_ROOTS , properties : Some (props) , } . get_state () } }) , above_root_placement : Some (AboveRootPlacement { above_root_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: MOSS_CARPET . default_state }) , above_root_placement_chance : 0.5f32 , }) , mangrove_root_placement : MangroveRootPlacement { can_grow_through : & pumpkin_data :: tag :: Block :: MINECRAFT_MANGROVE_ROOTS_CAN_GROW_THROUGH . 1 , muddy_roots_in : const { & [pumpkin_data :: BlockId :: MUD . as_u16 () , pumpkin_data :: BlockId :: MUDDY_MANGROVE_ROOTS . as_u16 ()] } , muddy_roots_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MUDDY_MANGROVE_ROOTS , properties : Some (props) , } . get_state () } }) , max_root_width : 8i32 , max_root_length : 15i32 , random_skew_chance : 0.2f32 , } , })) , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MangroveVegetation,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::TallMangroveChecked,
),
chance: 0.85f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::MangroveChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MeadowTrees,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakBees,
),
chance: 0.5f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SuperBirchBees,
)),
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: MegaJungleTree , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 10u8 , height_rand_a : 2u8 , height_rand_b : 19u8 , r#type : TrunkType :: MegaJungle (MegaJungleTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: JUNGLE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Jungle (JungleFoliagePlacer { height : 2i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : false , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: TrunkVine (TrunkVineTreeDecorator) , TreeDecorator :: LeaveVine (LeavesVineTreeDecorator { probability : 0.25f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: MegaPine , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 13u8 , height_rand_a : 2u8 , height_rand_b : 14u8 , r#type : TrunkType :: Giant (GiantTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: MegaPine (MegaPineFoliagePlacer { crown_height : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 3i32 , max_inclusive : 7i32 })) }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : false , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: AlterGround (AlterGroundTreeDecorator { })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: MegaSpruce , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 13u8 , height_rand_a : 2u8 , height_rand_b : 14u8 , r#type : TrunkType :: Giant (GiantTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: MegaPine (MegaPineFoliagePlacer { crown_height : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 13i32 , max_inclusive : 17i32 })) }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : false , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: AlterGround (AlterGroundTreeDecorator { })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Melon,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::MELON.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MonsterRoom,
ConfiguredFeature::MonsterRoom(
crate::generation::feature::features::monster_room::DungeonFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MossPatch,
ConfiguredFeature::VegetationPatch(vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_MOSS_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::MOSS_BLOCK.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::MossVegetation,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor,
depth: IntProvider::Constant(1i32),
extra_bottom_block_chance: 0f32,
vertical_range: 5i32,
vegetation_chance: 0.8f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 4i32,
max_inclusive: 7i32,
})),
extra_edge_column_chance: 0.3f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MossPatchBonemeal,
ConfiguredFeature::VegetationPatch(vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_MOSS_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::MOSS_BLOCK.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::MossVegetation,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor,
depth: IntProvider::Constant(1i32),
extra_bottom_block_chance: 0f32,
vertical_range: 5i32,
vegetation_chance: 0.6f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 2i32,
})),
extra_edge_column_chance: 0.75f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MossPatchCeiling,
ConfiguredFeature::VegetationPatch(vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_MOSS_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::MOSS_BLOCK.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::CaveVineInMoss,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Ceiling,
depth: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 2i32,
})),
extra_bottom_block_chance: 0f32,
vertical_range: 5i32,
vegetation_chance: 0.08f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 4i32,
max_inclusive: 7i32,
})),
extra_edge_column_chance: 0.3f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MossVegetation,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::FLOWERING_AZALEA.default_state,
weight: 4i32,
},
Weighted {
data: pumpkin_data::Block::AZALEA.default_state,
weight: 7i32,
},
Weighted {
data: pumpkin_data::Block::MOSS_CARPET.default_state,
weight: 25i32,
},
Weighted {
data: pumpkin_data::Block::SHORT_GRASS.default_state,
weight: 50i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::TALL_GRASS,
properties: Some(props),
}
.get_state()
},
weight: 10i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::MushroomIslandVegetation,
ConfiguredFeature::RandomBooleanSelector(RandomBooleanFeature {
feature_true: Box::new(PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::HugeRedMushroom,
),
placement: vec![],
})),
feature_false: Box::new(PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::HugeBrownMushroom,
),
placement: vec![],
})),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::NetherSprouts,
ConfiguredFeature::NetherForestVegetation(NetherForestVegetationFeature {
state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::NETHER_SPROUTS.default_state,
}),
spread_width: 8i32,
spread_height: 4i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::NetherSproutsBonemeal,
ConfiguredFeature::NetherForestVegetation(NetherForestVegetationFeature {
state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::NETHER_SPROUTS.default_state,
}),
spread_width: 3i32,
spread_height: 1i32,
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Oak , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: OakBees0002LeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.002f32 }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: OakBees002 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.02f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: OakBees005 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.05f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: OakLeafLitter , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 2u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 96i32 , radius : 4i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , }) , TreeDecorator :: PlaceOnGround (PlaceOnGroundTreeDecorator { tries : 150i32 , radius : 1i32 , height : 2i32 , block_state_provider : BlockStateProvider :: Weighted (WeightedBlockStateProvider { entries : vec ! [Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "1" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "2" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "3" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "north" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "east" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "south" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 } , Weighted { data : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("facing" . to_string () , "west" . to_string ()) ; props . insert ("segment_amount" . to_string () , "4" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: LEAF_LITTER , properties : Some (props) , } . get_state () } , weight : 1i32 }] , }) , })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreAncientDebrisLarge,
ConfiguredFeature::ScatteredOre(
crate::generation::feature::features::scattered_ore::ScatteredOreFeature {
size: 3i32,
discard_chance_on_air_exposure: 1f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_NETHER,
}),
state: pumpkin_data::Block::ANCIENT_DEBRIS.default_state,
}],
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreAncientDebrisSmall,
ConfiguredFeature::ScatteredOre(
crate::generation::feature::features::scattered_ore::ScatteredOreFeature {
size: 2i32,
discard_chance_on_air_exposure: 1f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_NETHER,
}),
state: pumpkin_data::Block::ANCIENT_DEBRIS.default_state,
}],
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreAndesite,
ConfiguredFeature::Ore(OreFeature {
size: 64i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::ANDESITE.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreBlackstone,
ConfiguredFeature::Ore(OreFeature {
size: 33i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::BlockMatch(BlockMatchRuleTest {
block: pumpkin_data::BlockId::NETHERRACK,
}),
state: pumpkin_data::Block::BLACKSTONE.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreClay,
ConfiguredFeature::Ore(OreFeature {
size: 33i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::CLAY.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreCoal,
ConfiguredFeature::Ore(OreFeature {
size: 17i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::COAL_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_COAL_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreCoalBuried,
ConfiguredFeature::Ore(OreFeature {
size: 17i32,
discard_chance_on_air_exposure: 0.5f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::COAL_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_COAL_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreCopperLarge,
ConfiguredFeature::Ore(OreFeature {
size: 20i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::COPPER_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_COPPER_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreCopperSmall,
ConfiguredFeature::Ore(OreFeature {
size: 10i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::COPPER_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_COPPER_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreDiamondBuried,
ConfiguredFeature::Ore(OreFeature {
size: 8i32,
discard_chance_on_air_exposure: 1f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DIAMOND_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_DIAMOND_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreDiamondLarge,
ConfiguredFeature::Ore(OreFeature {
size: 12i32,
discard_chance_on_air_exposure: 0.7f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DIAMOND_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_DIAMOND_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreDiamondMedium,
ConfiguredFeature::Ore(OreFeature {
size: 8i32,
discard_chance_on_air_exposure: 0.5f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DIAMOND_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_DIAMOND_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreDiamondSmall,
ConfiguredFeature::Ore(OreFeature {
size: 4i32,
discard_chance_on_air_exposure: 0.5f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DIAMOND_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_DIAMOND_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreDiorite,
ConfiguredFeature::Ore(OreFeature {
size: 64i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::DIORITE.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreDirt,
ConfiguredFeature::Ore(OreFeature {
size: 33i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::DIRT.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreEmerald,
ConfiguredFeature::Ore(OreFeature {
size: 3i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::EMERALD_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_EMERALD_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreGold,
ConfiguredFeature::Ore(OreFeature {
size: 9i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::GOLD_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_GOLD_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreGoldBuried,
ConfiguredFeature::Ore(OreFeature {
size: 9i32,
discard_chance_on_air_exposure: 0.5f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::GOLD_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_GOLD_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreGranite,
ConfiguredFeature::Ore(OreFeature {
size: 64i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::GRANITE.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreGravel,
ConfiguredFeature::Ore(OreFeature {
size: 33i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::GRAVEL.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreGravelNether,
ConfiguredFeature::Ore(OreFeature {
size: 33i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::BlockMatch(BlockMatchRuleTest {
block: pumpkin_data::BlockId::NETHERRACK,
}),
state: pumpkin_data::Block::GRAVEL.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreInfested,
ConfiguredFeature::Ore(OreFeature {
size: 9i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::INFESTED_STONE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: {
let mut props = std::collections::HashMap::new();
props.insert("axis".to_string(), "y".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::INFESTED_DEEPSLATE,
properties: Some(props),
}
.get_state()
},
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreIron,
ConfiguredFeature::Ore(OreFeature {
size: 9i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::IRON_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_IRON_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreIronSmall,
ConfiguredFeature::Ore(OreFeature {
size: 4i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::IRON_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_IRON_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreLapis,
ConfiguredFeature::Ore(OreFeature {
size: 7i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::LAPIS_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_LAPIS_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreLapisBuried,
ConfiguredFeature::Ore(OreFeature {
size: 7i32,
discard_chance_on_air_exposure: 1f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::LAPIS_ORE.default_state,
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: pumpkin_data::Block::DEEPSLATE_LAPIS_ORE.default_state,
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreMagma,
ConfiguredFeature::Ore(OreFeature {
size: 33i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::BlockMatch(BlockMatchRuleTest {
block: pumpkin_data::BlockId::NETHERRACK,
}),
state: pumpkin_data::Block::MAGMA_BLOCK.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreNetherGold,
ConfiguredFeature::Ore(OreFeature {
size: 10i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::BlockMatch(BlockMatchRuleTest {
block: pumpkin_data::BlockId::NETHERRACK,
}),
state: pumpkin_data::Block::NETHER_GOLD_ORE.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreQuartz,
ConfiguredFeature::Ore(OreFeature {
size: 14i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::BlockMatch(BlockMatchRuleTest {
block: pumpkin_data::BlockId::NETHERRACK,
}),
state: pumpkin_data::Block::NETHER_QUARTZ_ORE.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreRedstone,
ConfiguredFeature::Ore(OreFeature {
size: 8i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_STONE_ORE_REPLACEABLES,
}),
state: {
let mut props = std::collections::HashMap::new();
props.insert("lit".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::REDSTONE_ORE,
properties: Some(props),
}
.get_state()
},
},
OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_DEEPSLATE_ORE_REPLACEABLES,
}),
state: {
let mut props = std::collections::HashMap::new();
props.insert("lit".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::DEEPSLATE_REDSTONE_ORE,
properties: Some(props),
}
.get_state()
},
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreSoulSand,
ConfiguredFeature::Ore(OreFeature {
size: 12i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::BlockMatch(BlockMatchRuleTest {
block: pumpkin_data::BlockId::NETHERRACK,
}),
state: pumpkin_data::Block::SOUL_SAND.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::OreTuff,
ConfiguredFeature::Ore(OreFeature {
size: 64i32,
discard_chance_on_air_exposure: 0f32,
targets: vec![OreTarget {
target: RuleTest::TagMatch(TagMatchRuleTest {
tag: pumpkin_data::tag::Block::MINECRAFT_BASE_STONE_OVERWORLD,
}),
state: pumpkin_data::Block::TUFF.default_state,
}],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PaleForestFlower,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::CLOSED_EYEBLOSSOM.default_state,
}),
schedule_tick: Some(true),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PaleGardenVegetation,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PaleOakCreakingChecked,
),
chance: 0.1f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PaleOakChecked,
),
chance: 0.9f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PaleOakChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PaleMossPatch,
ConfiguredFeature::VegetationPatch(vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_MOSS_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::PALE_MOSS_BLOCK.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::PaleMossVegetation,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor,
depth: IntProvider::Constant(1i32),
extra_bottom_block_chance: 0f32,
vertical_range: 5i32,
vegetation_chance: 0.3f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 2i32,
max_inclusive: 4i32,
})),
extra_edge_column_chance: 0.75f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PaleMossPatchBonemeal,
ConfiguredFeature::VegetationPatch(vegetation_patch::VegetationPatchFeature {
replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_MOSS_REPLACEABLE,
}),
ground_state: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::PALE_MOSS_BLOCK.default_state,
}),
vegetation_feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::PaleMossVegetation,
),
placement: vec![],
}),
surface: pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor,
depth: IntProvider::Constant(1i32),
extra_bottom_block_chance: 0f32,
vertical_range: 5i32,
vegetation_chance: 0.6f32,
xz_radius: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 2i32,
})),
extra_edge_column_chance: 0.75f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PaleMossVegetation,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("bottom".to_string(), "true".to_string());
props.insert("east".to_string(), "none".to_string());
props.insert("north".to_string(), "none".to_string());
props.insert("south".to_string(), "none".to_string());
props.insert("west".to_string(), "none".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::PALE_MOSS_CARPET,
properties: Some(props),
}
.get_state()
},
weight: 25i32,
},
Weighted {
data: pumpkin_data::Block::SHORT_GRASS.default_state,
weight: 25i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::TALL_GRASS,
properties: Some(props),
}
.get_state()
},
weight: 10i32,
},
],
}),
schedule_tick: None,
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: PaleOak , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: PALE_OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 6u8 , height_rand_a : 2u8 , height_rand_b : 1u8 , r#type : TrunkType :: DarkOak (DarkOakTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: PALE_OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: DarkOak (DarkOakFoliagePlacer) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: ThreeLayersFeatureSize (ThreeLayersFeatureSize { limit : 1u8 , upper_limit : 1u8 , lower_size : 0u8 , middle_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: PaleMoss (PaleMossTreeDecorator { })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: PaleOakBonemeal , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: PALE_OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 6u8 , height_rand_a : 2u8 , height_rand_b : 1u8 , r#type : TrunkType :: DarkOak (DarkOakTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: PALE_OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: DarkOak (DarkOakFoliagePlacer) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: ThreeLayersFeatureSize (ThreeLayersFeatureSize { limit : 1u8 , upper_limit : 1u8 , lower_size : 0u8 , middle_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: PaleOakCreaking , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: PALE_OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 6u8 , height_rand_a : 2u8 , height_rand_b : 1u8 , r#type : TrunkType :: DarkOak (DarkOakTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: PALE_OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (0i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: DarkOak (DarkOakFoliagePlacer) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: ThreeLayersFeatureSize (ThreeLayersFeatureSize { limit : 1u8 , upper_limit : 1u8 , lower_size : 0u8 , middle_size : 1u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: PaleMoss (PaleMossTreeDecorator { }) , TreeDecorator :: CreakingHeart (CreakingHeartTreeDecorator { })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PatchFire,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
props.insert("east".to_string(), "false".to_string());
props.insert("north".to_string(), "false".to_string());
props.insert("south".to_string(), "false".to_string());
props.insert("up".to_string(), "false".to_string());
props.insert("west".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::FIRE,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PatchSoulFire,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SOUL_FIRE.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PileHay,
ConfiguredFeature::BlockPile(
crate::generation::feature::features::block_pile::BlockPileFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PileIce,
ConfiguredFeature::BlockPile(
crate::generation::feature::features::block_pile::BlockPileFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PileMelon,
ConfiguredFeature::BlockPile(
crate::generation::feature::features::block_pile::BlockPileFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PilePumpkin,
ConfiguredFeature::BlockPile(
crate::generation::feature::features::block_pile::BlockPileFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PileSnow,
ConfiguredFeature::BlockPile(
crate::generation::feature::features::block_pile::BlockPileFeature {},
),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Pine , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 6u8 , height_rand_a : 4u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (1i32) , offset : IntProvider :: Constant (1i32) , r#type : FoliageType :: Pine (PineFoliagePlacer { height : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 3i32 , max_inclusive : 4i32 })) }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 2u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::PointedDripstone,
ConfiguredFeature::SimpleRandomSelector(SimpleRandomFeature {
features: vec![
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::PointedDripstone(
SmallDripstoneFeature {
taller_dripstone: 0.2f32,
directional_spread: 0.7f32,
spread_radius2: 0.5f32,
spread_radius3: 0.5f32,
},
))),
placement: vec![
PlacementModifier::EnvironmentScan(EnvironmentScanPlacementModifier {
direction_of_search: BlockDirection::Down,
target_condition: BlockPredicate::Solid(SolidBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
}),
allowed_search_condition: Some(BlockPredicate::AnyOf(
AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
BlockPredicate::MatchingBlocks(
MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
},
),
],
},
)),
max_steps: 12i32,
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Constant(0i32),
y_spread: IntProvider::Constant(1i32),
}),
],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::PointedDripstone(
SmallDripstoneFeature {
taller_dripstone: 0.2f32,
directional_spread: 0.7f32,
spread_radius2: 0.5f32,
spread_radius3: 0.5f32,
},
))),
placement: vec![
PlacementModifier::EnvironmentScan(EnvironmentScanPlacementModifier {
direction_of_search: BlockDirection::Up,
target_condition: BlockPredicate::Solid(SolidBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
}),
allowed_search_condition: Some(BlockPredicate::AnyOf(
AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
BlockPredicate::MatchingBlocks(
MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
},
),
],
},
)),
max_steps: 12i32,
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Constant(0i32),
y_spread: IntProvider::Constant(-1i32),
}),
],
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Pumpkin,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::PUMPKIN.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::RedMushroom,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::RED_MUSHROOM.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::RootedAzaleaTree,
ConfiguredFeature::RootSystem(
crate::generation::feature::features::root_system::RootSystemFeature {
feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::AzaleaTree,
),
placement: vec![],
}),
required_vertical_space_for_tree: 3i32,
root_radius: 3i32,
root_replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AZALEA_ROOT_REPLACEABLE,
}),
root_state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::ROOTED_DIRT.default_state,
}),
root_placement_attempts: 20i32,
root_column_max_height: 100i32,
hanging_root_radius: 3i32,
hanging_roots_vertical_span: 2i32,
hanging_root_state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("waterlogged".to_string(), "false".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::HANGING_ROOTS,
properties: Some(props),
}
.get_state()
},
}),
hanging_root_placement_attempts: 20i32,
allowed_vertical_water_for_tree: 2i32,
allowed_tree_position: BlockPredicate::AllOf(AllOfBlockPredicate {
predicates: vec![
BlockPredicate::AnyOf(AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_REPLACEABLE_BY_TREES,
}),
],
}),
BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate {
offset: Some(Vector3::new(0i32, -1i32, 0i32)),
},
tag: pumpkin_data::tag::Block::MINECRAFT_AZALEA_GROWS_ON,
}),
],
}),
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::RootedSulfurSpring,
ConfiguredFeature::RootSystem(
crate::generation::feature::features::root_system::RootSystemFeature {
feature: Box::new(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::SulfurSpring,
),
placement: vec![],
}),
required_vertical_space_for_tree: 5i32,
root_radius: 3i32,
root_replaceable: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AZALEA_ROOT_REPLACEABLE,
}),
root_state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SULFUR.default_state,
}),
root_placement_attempts: 20i32,
root_column_max_height: 184i32,
hanging_root_radius: 1i32,
hanging_roots_vertical_span: 1i32,
hanging_root_state_provider: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SULFUR.default_state,
}),
hanging_root_placement_attempts: 1i32,
allowed_vertical_water_for_tree: 1i32,
allowed_tree_position: BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SculkPatchAncientCity,
ConfiguredFeature::SculkPatch(
crate::generation::feature::features::sculk_patch::SculkPatchFeature {
charge_count: 10i32,
amount_per_charge: 32i32,
spread_attempts: 64i32,
growth_rounds: 0i32,
spread_rounds: 1i32,
extra_rare_growths: IntProvider::Object(NormalIntProvider::Uniform(
UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 3i32,
},
)),
catalyst_chance: 0.5f32,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SculkPatchDeepDark,
ConfiguredFeature::SculkPatch(
crate::generation::feature::features::sculk_patch::SculkPatchFeature {
charge_count: 10i32,
amount_per_charge: 32i32,
spread_attempts: 64i32,
growth_rounds: 0i32,
spread_rounds: 1i32,
extra_rare_growths: IntProvider::Constant(0i32),
catalyst_chance: 0.5f32,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SculkVein,
ConfiguredFeature::MultifaceGrowth(
crate::generation::feature::features::multiface_growth::MultifaceGrowthFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SeaPickle,
ConfiguredFeature::SeaPickle(SeaPickleFeature {
count: IntProvider::Constant(20i32),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SeagrassMid,
ConfiguredFeature::Seagrass(SeagrassFeature {
probability: 0.6f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SeagrassShort,
ConfiguredFeature::Seagrass(SeagrassFeature {
probability: 0.3f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SeagrassSlightlyLessShort,
ConfiguredFeature::Seagrass(SeagrassFeature {
probability: 0.4f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SeagrassTall,
ConfiguredFeature::Seagrass(SeagrassFeature {
probability: 0.8f32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SmallBasaltColumns,
ConfiguredFeature::BasaltColumns(
crate::generation::feature::features::basalt_columns::BasaltColumnsFeature {
height: IntProvider::Object(NormalIntProvider::Uniform(UniformIntProvider {
min_inclusive: 1i32,
max_inclusive: 4i32,
})),
reach: IntProvider::Constant(1i32),
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SporeBlossom,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::SPORE_BLOSSOM.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SpringLavaFrozen,
ConfiguredFeature::SpringFeature(SpringFeatureFeature {
state: {
let mut props = std::collections::HashMap::new();
props.insert("falling".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LAVA,
properties: Some(props),
}
.get_state()
},
requires_block_below: true,
rock_count: 4i32,
hole_count: 1i32,
valid_blocks: BlockWrapper::Multi(vec![
"minecraft:snow_block".to_string(),
"minecraft:powder_snow".to_string(),
"minecraft:packed_ice".to_string(),
]),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SpringLavaNether,
ConfiguredFeature::SpringFeature(SpringFeatureFeature {
state: {
let mut props = std::collections::HashMap::new();
props.insert("falling".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LAVA,
properties: Some(props),
}
.get_state()
},
requires_block_below: true,
rock_count: 4i32,
hole_count: 1i32,
valid_blocks: BlockWrapper::Multi(vec![
"minecraft:netherrack".to_string(),
"minecraft:soul_sand".to_string(),
"minecraft:gravel".to_string(),
"minecraft:magma_block".to_string(),
"minecraft:blackstone".to_string(),
]),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SpringLavaOverworld,
ConfiguredFeature::SpringFeature(SpringFeatureFeature {
state: {
let mut props = std::collections::HashMap::new();
props.insert("falling".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LAVA,
properties: Some(props),
}
.get_state()
},
requires_block_below: true,
rock_count: 4i32,
hole_count: 1i32,
valid_blocks: BlockWrapper::Multi(vec![
"minecraft:stone".to_string(),
"minecraft:granite".to_string(),
"minecraft:diorite".to_string(),
"minecraft:andesite".to_string(),
"minecraft:deepslate".to_string(),
"minecraft:tuff".to_string(),
"minecraft:calcite".to_string(),
"minecraft:dirt".to_string(),
]),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SpringNetherClosed,
ConfiguredFeature::SpringFeature(SpringFeatureFeature {
state: {
let mut props = std::collections::HashMap::new();
props.insert("falling".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LAVA,
properties: Some(props),
}
.get_state()
},
requires_block_below: false,
rock_count: 5i32,
hole_count: 0i32,
valid_blocks: BlockWrapper::Single("minecraft:netherrack".to_string()),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SpringNetherOpen,
ConfiguredFeature::SpringFeature(SpringFeatureFeature {
state: {
let mut props = std::collections::HashMap::new();
props.insert("falling".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::LAVA,
properties: Some(props),
}
.get_state()
},
requires_block_below: false,
rock_count: 4i32,
hole_count: 1i32,
valid_blocks: BlockWrapper::Single("minecraft:netherrack".to_string()),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SpringWater,
ConfiguredFeature::SpringFeature(SpringFeatureFeature {
state: {
let mut props = std::collections::HashMap::new();
props.insert("falling".to_string(), "true".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WATER,
properties: Some(props),
}
.get_state()
},
requires_block_below: true,
rock_count: 4i32,
hole_count: 1i32,
valid_blocks: BlockWrapper::Multi(vec![
"minecraft:stone".to_string(),
"minecraft:granite".to_string(),
"minecraft:diorite".to_string(),
"minecraft:andesite".to_string(),
"minecraft:deepslate".to_string(),
"minecraft:tuff".to_string(),
"minecraft:calcite".to_string(),
"minecraft:dirt".to_string(),
"minecraft:snow_block".to_string(),
"minecraft:powder_snow".to_string(),
"minecraft:packed_ice".to_string(),
]),
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: Spruce , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 1u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: SPRUCE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 2i32 , max_inclusive : 3i32 })) , offset : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 0i32 , max_inclusive : 2i32 })) , r#type : FoliageType :: Spruce (SpruceFoliagePlacer { trunk_height : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 1i32 , max_inclusive : 2i32 })) }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 2u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SugarCane,
ConfiguredFeature::BlockColumn(BlockColumnFeature {
layers: vec![Layer {
height: IntProvider::Object(NormalIntProvider::BiasedToBottom(
BiasedToBottomIntProvider {
min_inclusive: 2i32,
max_inclusive: 4i32,
},
)),
provider: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("age".to_string(), "0".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::SUGAR_CANE,
properties: Some(props),
}
.get_state()
},
}),
}],
direction: BlockDirection::Up,
allowed_placement: BlockPredicate::MatchingBlockTag(MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
}),
prioritize_tip: false,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SulfurPool,
ConfiguredFeature::NoOp,
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SulfurSpike,
ConfiguredFeature::SimpleRandomSelector(SimpleRandomFeature {
features: vec![
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::PointedDripstone(
SmallDripstoneFeature {
taller_dripstone: 0.2f32,
directional_spread: 0.7f32,
spread_radius2: 0.5f32,
spread_radius3: 0.5f32,
},
))),
placement: vec![
PlacementModifier::EnvironmentScan(EnvironmentScanPlacementModifier {
direction_of_search: BlockDirection::Down,
target_condition: BlockPredicate::Solid(SolidBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
}),
allowed_search_condition: Some(BlockPredicate::AnyOf(
AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
BlockPredicate::MatchingBlocks(
MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
},
),
],
},
)),
max_steps: 12i32,
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Constant(0i32),
y_spread: IntProvider::Constant(1i32),
}),
],
},
PlacedFeature {
feature: Feature::Inlined(Box::new(ConfiguredFeature::PointedDripstone(
SmallDripstoneFeature {
taller_dripstone: 0.2f32,
directional_spread: 0.7f32,
spread_radius2: 0.5f32,
spread_radius3: 0.5f32,
},
))),
placement: vec![
PlacementModifier::EnvironmentScan(EnvironmentScanPlacementModifier {
direction_of_search: BlockDirection::Up,
target_condition: BlockPredicate::Solid(SolidBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
}),
allowed_search_condition: Some(BlockPredicate::AnyOf(
AnyOfBlockPredicate {
predicates: vec![
BlockPredicate::MatchingBlockTag(
MatchingBlockTagPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
tag: pumpkin_data::tag::Block::MINECRAFT_AIR,
},
),
BlockPredicate::MatchingBlocks(
MatchingBlocksBlockPredicate {
offset: OffsetBlocksBlockPredicate { offset: None },
blocks: MatchingBlocksWrapper::Single(
"minecraft:water".to_string(),
),
},
),
],
},
)),
max_steps: 12i32,
}),
PlacementModifier::RandomOffset(RandomOffsetPlacementModifier {
xz_spread: IntProvider::Constant(0i32),
y_spread: IntProvider::Constant(-1i32),
}),
],
},
],
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SulfurSpikeCluster,
ConfiguredFeature::DripstoneCluster(
crate::generation::feature::features::drip_stone::cluster::DripstoneClusterFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::SulfurSpring,
ConfiguredFeature::NoOp,
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Sunflower,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::SUNFLOWER,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: SuperBirchBees , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 6u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 1f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: SuperBirchBees0002 , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 2u8 , height_rand_b : 6u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: BIRCH_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (2i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.002f32 })] , root_placer : None , }))) ;
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: SwampOak , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 5u8 , height_rand_a : 3u8 , height_rand_b : 0u8 , r#type : TrunkType :: Straight (StraightTrunkPlacer) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: OAK_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (3i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: Blob (BlobFoliagePlacer { height : 3i32 }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 1u8 , lower_size : 0u8 , upper_size : 1u8 , }) } , ignore_vines : false , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: LeaveVine (LeavesVineTreeDecorator { probability : 0.25f32 })] , root_placer : None , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TaigaGrass,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::SHORT_GRASS.default_state,
weight: 1i32,
},
Weighted {
data: pumpkin_data::Block::FERN.default_state,
weight: 4i32,
},
],
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TallGrass,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: {
let mut props = std::collections::HashMap::new();
props.insert("half".to_string(), "lower".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::TALL_GRASS,
properties: Some(props),
}
.get_state()
},
}),
schedule_tick: None,
}),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: TallMangrove , ConfiguredFeature :: Tree (Box :: new (TreeFeature { trunk_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MANGROVE_LOG , properties : Some (props) , } . get_state () } }) , trunk_placer : TrunkPlacer { base_height : 4u8 , height_rand_a : 1u8 , height_rand_b : 9u8 , r#type : TrunkType :: UpwardsBranching (UpwardsBranchingTrunkPlacer { extra_branch_steps : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 1i32 , max_inclusive : 6i32 })) , place_branch_per_log_probability : 0.5f32 , extra_branch_length : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 0i32 , max_inclusive : 1i32 })) , can_grow_through : & pumpkin_data :: tag :: Block :: MINECRAFT_MANGROVE_LOGS_CAN_GROW_THROUGH . 1 , }) , } , foliage_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("distance" . to_string () , "7" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MANGROVE_LEAVES , properties : Some (props) , } . get_state () } }) , foliage_placer : FoliagePlacer { radius : IntProvider :: Constant (3i32) , offset : IntProvider :: Constant (0i32) , r#type : FoliageType :: RandomSpread (RandomSpreadFoliagePlacer { foliage_height : IntProvider :: Constant (2i32) , leaf_placement_attempts : 70i32 , }) } , minimum_size : FeatureSize { min_clipped_height : None , r#type : FeatureSizeType :: TwoLayersFeatureSize (TwoLayersFeatureSize { limit : 3u8 , lower_size : 0u8 , upper_size : 2u8 , }) } , ignore_vines : true , below_trunk_provider : BlockStateProvider :: Rule (RuleBasedBlockStateProvider { fallback : None , rules : vec ! [BlockStateRule { if_true : BlockPredicate :: Not (NotBlockPredicate { predicate : Box :: new (BlockPredicate :: MatchingBlockTag (MatchingBlockTagPredicate { offset : OffsetBlocksBlockPredicate { offset : None } , tag : pumpkin_data :: tag :: Block :: MINECRAFT_CANNOT_REPLACE_BELOW_TREE_TRUNK , })) , }) , then : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: DIRT . default_state }) }] , }) , decorators : vec ! [TreeDecorator :: LeaveVine (LeavesVineTreeDecorator { probability : 0.125f32 }) , TreeDecorator :: AttachedToLeaves (AttachedToLeavesTreeDecorator { }) , TreeDecorator :: Beehive (BeehiveTreeDecorator { probability : 0.01f32 })] , root_placer : Some (RootPlacer :: Mangrove (MangroveRootPlacer { trunk_offset_y : IntProvider :: Object (NormalIntProvider :: Uniform (UniformIntProvider { min_inclusive : 3i32 , max_inclusive : 7i32 })) , root_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("waterlogged" . to_string () , "false" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MANGROVE_ROOTS , properties : Some (props) , } . get_state () } }) , above_root_placement : Some (AboveRootPlacement { above_root_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : pumpkin_data :: Block :: MOSS_CARPET . default_state }) , above_root_placement_chance : 0.5f32 , }) , mangrove_root_placement : MangroveRootPlacement { can_grow_through : & pumpkin_data :: tag :: Block :: MINECRAFT_MANGROVE_ROOTS_CAN_GROW_THROUGH . 1 , muddy_roots_in : const { & [pumpkin_data :: BlockId :: MUD . as_u16 () , pumpkin_data :: BlockId :: MUDDY_MANGROVE_ROOTS . as_u16 ()] } , muddy_roots_provider : BlockStateProvider :: Simple (SimpleStateProvider { state : { let mut props = std :: collections :: HashMap :: new () ; props . insert ("axis" . to_string () , "y" . to_string ()) ; BlockStateCodec { name : & pumpkin_data :: Block :: MUDDY_MANGROVE_ROOTS , properties : Some (props) , } . get_state () } }) , max_root_width : 8i32 , max_root_length : 15i32 , random_skew_chance : 0.2f32 , } , })) , }))) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesBadlands,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenOakTree,
),
chance: 0.0125f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakLeafLitter,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesBirch,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenBirchTree,
),
chance: 0.0125f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::BirchBees0002,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesBirchAndOakLeafLitter,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenBirchTree,
),
chance: 0.0025f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::BirchBees0002LeafLitter,
),
chance: 0.2f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakBees0002LeafLitter,
),
chance: 0.1f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenOakTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakBees0002LeafLitter,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesFlowerForest,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenBirchTree,
),
chance: 0.0025f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::BirchBees002,
),
chance: 0.2f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakBees002,
),
chance: 0.1f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakBees002,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesGrove,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PineOnSnow,
),
chance: 0.33333334f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SpruceOnSnow,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesJungle,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakChecked,
),
chance: 0.1f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::JungleBush,
),
chance: 0.5f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::MegaJungleTreeChecked,
),
chance: 0.33333334f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenJungleTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::JungleTree,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesOldGrowthPineTaiga,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::MegaSpruceChecked,
),
chance: 0.025641026f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::MegaPineChecked,
),
chance: 0.30769232f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PineChecked,
),
chance: 0.33333334f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenSpruceTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SpruceChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesOldGrowthSpruceTaiga,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::MegaSpruceChecked,
),
chance: 0.33333334f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PineChecked,
),
chance: 0.33333334f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenSpruceTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SpruceChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesPlains,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::FancyOakBees005,
),
placement: vec![],
}),
chance: 0.33333334f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenOakTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Direct(PlacedFeature {
feature: Feature::Named(
pumpkin_data::configured_feature::ConfiguredFeature::OakBees005,
),
placement: vec![],
})),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesSavanna,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::AcaciaChecked,
),
chance: 0.8f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenOakTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesSnowy,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenSpruceTree,
),
chance: 0.0125f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SpruceChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesSparseJungle,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakChecked,
),
chance: 0.1f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::JungleBush,
),
chance: 0.5f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenJungleTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::JungleTree,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesTaiga,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::PineChecked,
),
chance: 0.33333334f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenSpruceTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SpruceChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesWater,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakChecked,
),
chance: 0.1f32,
}],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TreesWindsweptHills,
ConfiguredFeature::RandomSelector(RandomFeature {
features: vec![
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenSpruceTree,
),
chance: 0.008325f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::SpruceChecked,
),
chance: 0.666f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FancyOakChecked,
),
chance: 0.1f32,
},
RandomFeatureEntry {
feature: PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::FallenOakTree,
),
chance: 0.0125f32,
},
],
default: Box::new(PlacedFeatureWrapper::Named(
pumpkin_data::placed_feature::PlacedFeature::OakChecked,
)),
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TwistingVines,
ConfiguredFeature::TwistingVines(
crate::generation::feature::features::twisting_vines::TwistingVinesFeature {
spread_width: 8i32,
spread_height: 4i32,
max_height: 8i32,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::TwistingVinesBonemeal,
ConfiguredFeature::TwistingVines(
crate::generation::feature::features::twisting_vines::TwistingVinesFeature {
spread_width: 3i32,
spread_height: 1i32,
max_height: 2i32,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::UnderwaterMagma,
ConfiguredFeature::UnderwaterMagma(
crate::generation::feature::features::underwater_magma::UnderwaterMagmaFeature {
floor_search_range: 5i32,
placement_radius: 1i32,
placement_probability: 0.5f32,
},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Vines,
ConfiguredFeature::Vines(crate::generation::feature::features::vines::VinesFeature),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::VoidStartPlatform,
ConfiguredFeature::VoidStartPlatform(
crate::generation::feature::features::void_start_platform::VoidStartPlatformFeature {},
),
);
map . insert (pumpkin_data :: configured_feature :: ConfiguredFeature :: WarmOceanVegetation , ConfiguredFeature :: SimpleRandomSelector (SimpleRandomFeature { features : vec ! [PlacedFeature { feature : Feature :: Inlined (Box :: new (ConfiguredFeature :: CoralTree (crate :: generation :: feature :: features :: coral :: coral_tree :: CoralTreeFeature))) , placement : vec ! [] , } , PlacedFeature { feature : Feature :: Inlined (Box :: new (ConfiguredFeature :: CoralClaw (crate :: generation :: feature :: features :: coral :: coral_claw :: CoralClawFeature))) , placement : vec ! [] , } , PlacedFeature { feature : Feature :: Inlined (Box :: new (ConfiguredFeature :: CoralMushroom (crate :: generation :: feature :: features :: coral :: coral_mushroom :: CoralMushroomFeature))) , placement : vec ! [] , }] , })) ;
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::WarpedForestVegetation,
ConfiguredFeature::NetherForestVegetation(NetherForestVegetationFeature {
state_provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::WARPED_ROOTS.default_state,
weight: 85i32,
},
Weighted {
data: pumpkin_data::Block::CRIMSON_ROOTS.default_state,
weight: 1i32,
},
Weighted {
data: pumpkin_data::Block::WARPED_FUNGUS.default_state,
weight: 13i32,
},
Weighted {
data: pumpkin_data::Block::CRIMSON_FUNGUS.default_state,
weight: 1i32,
},
],
}),
spread_width: 8i32,
spread_height: 4i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::WarpedForestVegetationBonemeal,
ConfiguredFeature::NetherForestVegetation(NetherForestVegetationFeature {
state_provider: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: pumpkin_data::Block::WARPED_ROOTS.default_state,
weight: 85i32,
},
Weighted {
data: pumpkin_data::Block::CRIMSON_ROOTS.default_state,
weight: 1i32,
},
Weighted {
data: pumpkin_data::Block::WARPED_FUNGUS.default_state,
weight: 13i32,
},
Weighted {
data: pumpkin_data::Block::CRIMSON_FUNGUS.default_state,
weight: 1i32,
},
],
}),
spread_width: 3i32,
spread_height: 1i32,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::WarpedFungus,
ConfiguredFeature::HugeFungus(
crate::generation::feature::features::huge_fungus::HugeFungusFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::WarpedFungusPlanted,
ConfiguredFeature::HugeFungus(
crate::generation::feature::features::huge_fungus::HugeFungusFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Waterlily,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Simple(SimpleStateProvider {
state: pumpkin_data::Block::LILY_PAD.default_state,
}),
schedule_tick: None,
}),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::WeepingVines,
ConfiguredFeature::WeepingVines(
crate::generation::feature::features::weeping_vines::WeepingVinesFeature {},
),
);
map.insert(
pumpkin_data::configured_feature::ConfiguredFeature::Wildflower,
ConfiguredFeature::SimpleBlock(SimpleBlockFeature {
to_place: BlockStateProvider::Weighted(WeightedBlockStateProvider {
entries: vec![
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "1".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "2".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "3".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "north".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "east".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "south".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
Weighted {
data: {
let mut props = std::collections::HashMap::new();
props.insert("facing".to_string(), "west".to_string());
props.insert("flower_amount".to_string(), "4".to_string());
BlockStateCodec {
name: &pumpkin_data::Block::WILDFLOWERS,
properties: Some(props),
}
.get_state()
},
weight: 1i32,
},
],
}),
schedule_tick: None,
}),
);
map
}