4967 lines
382 KiB
Rust
4967 lines
382 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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("waterlogged".to_string(), "false".to_string());
|
|
props.insert("facing".to_string(), "up".to_string());
|
|
BlockStateCodec {
|
|
name: &pumpkin_data::Block::SMALL_AMETHYST_BUD,
|
|
properties: Some(props),
|
|
}
|
|
},
|
|
{
|
|
let mut props = std::collections::HashMap::new();
|
|
props.insert("waterlogged".to_string(), "false".to_string());
|
|
props.insert("facing".to_string(), "up".to_string());
|
|
BlockStateCodec {
|
|
name: &pumpkin_data::Block::MEDIUM_AMETHYST_BUD,
|
|
properties: Some(props),
|
|
}
|
|
},
|
|
{
|
|
let mut props = std::collections::HashMap::new();
|
|
props.insert("waterlogged".to_string(), "false".to_string());
|
|
props.insert("facing".to_string(), "up".to_string());
|
|
BlockStateCodec {
|
|
name: &pumpkin_data::Block::LARGE_AMETHYST_BUD,
|
|
properties: Some(props),
|
|
}
|
|
},
|
|
{
|
|
let mut props = std::collections::HashMap::new();
|
|
props.insert("waterlogged".to_string(), "false".to_string());
|
|
props.insert("facing".to_string(), "up".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("waterlogged".to_string(), "false".to_string());
|
|
props.insert("persistent".to_string(), "false".to_string());
|
|
props.insert("distance".to_string(), "7".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("waterlogged".to_string(), "false".to_string());
|
|
props.insert("persistent".to_string(), "false".to_string());
|
|
props.insert("distance".to_string(), "7".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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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("berries".to_string(), "false".to_string());
|
|
props.insert("age".to_string(), "0".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("berries".to_string(), "true".to_string());
|
|
props.insert("age".to_string(), "0".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("berries".to_string(), "false".to_string());
|
|
props.insert("age".to_string(), "0".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("berries".to_string(), "true".to_string());
|
|
props.insert("age".to_string(), "0".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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("half".to_string(), "lower".to_string());
|
|
props.insert("facing".to_string(), "east".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("half".to_string(), "lower".to_string());
|
|
props.insert("facing".to_string(), "west".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("half".to_string(), "lower".to_string());
|
|
props.insert("facing".to_string(), "north".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("half".to_string(), "lower".to_string());
|
|
props.insert("facing".to_string(), "south".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("facing".to_string(), "east".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("tilt".to_string(), "none".to_string());
|
|
props.insert("facing".to_string(), "east".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("facing".to_string(), "west".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("tilt".to_string(), "none".to_string());
|
|
props.insert("facing".to_string(), "west".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("facing".to_string(), "south".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("tilt".to_string(), "none".to_string());
|
|
props.insert("facing".to_string(), "south".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("facing".to_string(), "north".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(
|
|
"waterlogged".to_string(),
|
|
"false".to_string(),
|
|
);
|
|
props.insert("tilt".to_string(), "none".to_string());
|
|
props.insert("facing".to_string(), "north".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 {},
|
|
),
|
|
);
|
|
map.insert(
|
|
pumpkin_data::configured_feature::ConfiguredFeature::EndGatewayReturn,
|
|
ConfiguredFeature::EndGateway(
|
|
crate::generation::feature::features::end_gateway::EndGatewayFeature {},
|
|
),
|
|
);
|
|
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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "west".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "west".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "west".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "west".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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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("segment_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "north".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("segment_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "east".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("segment_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "south".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("segment_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "west".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("segment_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "north".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("segment_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "east".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("segment_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "south".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("segment_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "west".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("segment_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "north".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("segment_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "east".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("segment_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "south".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("segment_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "west".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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "1" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "2" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "3" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "north" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "east" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "south" . 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 ("segment_amount" . to_string () , "4" . to_string ()) ; props . insert ("facing" . to_string () , "west" . 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("west".to_string(), "none".to_string());
|
|
props.insert("south".to_string(), "none".to_string());
|
|
props.insert("north".to_string(), "none".to_string());
|
|
props.insert("east".to_string(), "none".to_string());
|
|
props.insert("bottom".to_string(), "true".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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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("west".to_string(), "false".to_string());
|
|
props.insert("up".to_string(), "false".to_string());
|
|
props.insert("south".to_string(), "false".to_string());
|
|
props.insert("north".to_string(), "false".to_string());
|
|
props.insert("east".to_string(), "false".to_string());
|
|
props.insert("age".to_string(), "0".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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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 ("waterlogged" . to_string () , "false" . to_string ()) ; props . insert ("persistent" . to_string () , "false" . to_string ()) ; props . insert ("distance" . to_string () , "7" . 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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "1".to_string());
|
|
props.insert("facing".to_string(), "west".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "2".to_string());
|
|
props.insert("facing".to_string(), "west".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "3".to_string());
|
|
props.insert("facing".to_string(), "west".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "north".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "east".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "south".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("flower_amount".to_string(), "4".to_string());
|
|
props.insert("facing".to_string(), "west".to_string());
|
|
BlockStateCodec {
|
|
name: &pumpkin_data::Block::WILDFLOWERS,
|
|
properties: Some(props),
|
|
}
|
|
.get_state()
|
|
},
|
|
weight: 1i32,
|
|
},
|
|
],
|
|
}),
|
|
schedule_tick: None,
|
|
}),
|
|
);
|
|
map
|
|
}
|