TreeFeatures.java
net.minecraft.data.worldgen.features.TreeFeatures
信息
- 全限定名:net.minecraft.data.worldgen.features.TreeFeatures
- 类型:public class
- 包:net.minecraft.data.worldgen.features
- 源码路径:src/main/java/net/minecraft/data/worldgen/features/TreeFeatures.java
- 起始行号:L71
- 职责:
TODO
字段/常量
-
CRIMSON_FUNGUS- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L72 - 说明:
TODO
- 类型:
-
CRIMSON_FUNGUS_PLANTED- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L73 - 说明:
TODO
- 类型:
-
WARPED_FUNGUS- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L74 - 说明:
TODO
- 类型:
-
WARPED_FUNGUS_PLANTED- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L75 - 说明:
TODO
- 类型:
-
HUGE_BROWN_MUSHROOM- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L76 - 说明:
TODO
- 类型:
-
HUGE_RED_MUSHROOM- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L77 - 说明:
TODO
- 类型:
-
OAK- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L78 - 说明:
TODO
- 类型:
-
DARK_OAK- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L79 - 说明:
TODO
- 类型:
-
PALE_OAK- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L80 - 说明:
TODO
- 类型:
-
PALE_OAK_BONEMEAL- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L81 - 说明:
TODO
- 类型:
-
PALE_OAK_CREAKING- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L82 - 说明:
TODO
- 类型:
-
BIRCH- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L83 - 说明:
TODO
- 类型:
-
ACACIA- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L84 - 说明:
TODO
- 类型:
-
SPRUCE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L85 - 说明:
TODO
- 类型:
-
PINE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L86 - 说明:
TODO
- 类型:
-
JUNGLE_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L87 - 说明:
TODO
- 类型:
-
FANCY_OAK- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L88 - 说明:
TODO
- 类型:
-
JUNGLE_TREE_NO_VINE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L89 - 说明:
TODO
- 类型:
-
MEGA_JUNGLE_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L90 - 说明:
TODO
- 类型:
-
MEGA_SPRUCE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L91 - 说明:
TODO
- 类型:
-
MEGA_PINE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L92 - 说明:
TODO
- 类型:
-
SUPER_BIRCH_BEES_0002- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L93 - 说明:
TODO
- 类型:
-
SUPER_BIRCH_BEES- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L94 - 说明:
TODO
- 类型:
-
SWAMP_OAK- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L95 - 说明:
TODO
- 类型:
-
JUNGLE_BUSH- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L96 - 说明:
TODO
- 类型:
-
AZALEA_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L97 - 说明:
TODO
- 类型:
-
MANGROVE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L98 - 说明:
TODO
- 类型:
-
TALL_MANGROVE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L99 - 说明:
TODO
- 类型:
-
CHERRY- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L100 - 说明:
TODO
- 类型:
-
OAK_BEES_0002_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L101 - 说明:
TODO
- 类型:
-
OAK_BEES_002- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L102 - 说明:
TODO
- 类型:
-
OAK_BEES_005- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L103 - 说明:
TODO
- 类型:
-
BIRCH_BEES_0002- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L104 - 说明:
TODO
- 类型:
-
BIRCH_BEES_0002_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L105 - 说明:
TODO
- 类型:
-
BIRCH_BEES_002- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L106 - 说明:
TODO
- 类型:
-
BIRCH_BEES_005- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L107 - 说明:
TODO
- 类型:
-
FANCY_OAK_BEES_0002_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L108 - 说明:
TODO
- 类型:
-
FANCY_OAK_BEES_002- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L109 - 说明:
TODO
- 类型:
-
FANCY_OAK_BEES_005- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L110 - 说明:
TODO
- 类型:
-
FANCY_OAK_BEES- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L111 - 说明:
TODO
- 类型:
-
CHERRY_BEES_005- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L112 - 说明:
TODO
- 类型:
-
OAK_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L113 - 说明:
TODO
- 类型:
-
DARK_OAK_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L114 - 说明:
TODO
- 类型:
-
BIRCH_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L115 - 说明:
TODO
- 类型:
-
FANCY_OAK_LEAF_LITTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L116 - 说明:
TODO
- 类型:
-
FALLEN_OAK_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L117 - 说明:
TODO
- 类型:
-
FALLEN_JUNGLE_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L118 - 说明:
TODO
- 类型:
-
FALLEN_SPRUCE_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L119 - 说明:
TODO
- 类型:
-
FALLEN_BIRCH_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L120 - 说明:
TODO
- 类型:
-
FALLEN_SUPER_BIRCH_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L121 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobTree(Block oakLog, Block oakLeaves, int baseHeight, int heightRandA, int heightRandB, int blobRadius) @ L123
- 方法名:createStraightBlobTree
- 源码定位:L123
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- oakLog: Block
- oakLeaves: Block
- baseHeight: int
- heightRandA: int
- heightRandB: int
- blobRadius: int
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder createOak() @ L135
- 方法名:createOak
- 源码定位:L135
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder createDarkOak() @ L139
- 方法名:createDarkOak
- 源码定位:L139
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenOak() @ L149
- 方法名:createFallenOak
- 源码定位:L149
- 返回类型:FallenTreeConfiguration.FallenTreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenBirch(int maxHeight) @ L153
- 方法名:createFallenBirch
- 源码定位:L153
- 返回类型:FallenTreeConfiguration.FallenTreeConfigurationBuilder
- 修饰符:private static
参数:
- maxHeight: int
说明:
TODO
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenJungle() @ L157
- 方法名:createFallenJungle
- 源码定位:L157
- 返回类型:FallenTreeConfiguration.FallenTreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenSpruce() @ L161
- 方法名:createFallenSpruce
- 源码定位:L161
- 返回类型:FallenTreeConfiguration.FallenTreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenTrees(Block logBlock, int minLength, int maxLength) @ L165
- 方法名:createFallenTrees
- 源码定位:L165
- 返回类型:FallenTreeConfiguration.FallenTreeConfigurationBuilder
- 修饰符:private static
参数:
- logBlock: Block
- minLength: int
- maxLength: int
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder createBirch() @ L182
- 方法名:createBirch
- 源码定位:L182
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder createSuperBirch() @ L186
- 方法名:createSuperBirch
- 源码定位:L186
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder createJungleTree() @ L190
- 方法名:createJungleTree
- 源码定位:L190
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder createFancyOak() @ L194
- 方法名:createFancyOak
- 源码定位:L194
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
private static TreeConfiguration.TreeConfigurationBuilder cherry() @ L205
- 方法名:cherry
- 源码定位:L205
- 返回类型:TreeConfiguration.TreeConfigurationBuilder
- 修饰符:private static
参数:
- 无
说明:
TODO
public static void bootstrap(BootstrapContext<ConfiguredFeature<?,?>> context) @ L226
- 方法名:bootstrap
- 源码定位:L226
- 返回类型:void
- 修饰符:public static
参数:
- context: BootstrapContext<ConfiguredFeature>
说明:
TODO
代码
public class TreeFeatures {
public static final ResourceKey<ConfiguredFeature<?, ?>> CRIMSON_FUNGUS = FeatureUtils.createKey("crimson_fungus");
public static final ResourceKey<ConfiguredFeature<?, ?>> CRIMSON_FUNGUS_PLANTED = FeatureUtils.createKey("crimson_fungus_planted");
public static final ResourceKey<ConfiguredFeature<?, ?>> WARPED_FUNGUS = FeatureUtils.createKey("warped_fungus");
public static final ResourceKey<ConfiguredFeature<?, ?>> WARPED_FUNGUS_PLANTED = FeatureUtils.createKey("warped_fungus_planted");
public static final ResourceKey<ConfiguredFeature<?, ?>> HUGE_BROWN_MUSHROOM = FeatureUtils.createKey("huge_brown_mushroom");
public static final ResourceKey<ConfiguredFeature<?, ?>> HUGE_RED_MUSHROOM = FeatureUtils.createKey("huge_red_mushroom");
public static final ResourceKey<ConfiguredFeature<?, ?>> OAK = FeatureUtils.createKey("oak");
public static final ResourceKey<ConfiguredFeature<?, ?>> DARK_OAK = FeatureUtils.createKey("dark_oak");
public static final ResourceKey<ConfiguredFeature<?, ?>> PALE_OAK = FeatureUtils.createKey("pale_oak");
public static final ResourceKey<ConfiguredFeature<?, ?>> PALE_OAK_BONEMEAL = FeatureUtils.createKey("pale_oak_bonemeal");
public static final ResourceKey<ConfiguredFeature<?, ?>> PALE_OAK_CREAKING = FeatureUtils.createKey("pale_oak_creaking");
public static final ResourceKey<ConfiguredFeature<?, ?>> BIRCH = FeatureUtils.createKey("birch");
public static final ResourceKey<ConfiguredFeature<?, ?>> ACACIA = FeatureUtils.createKey("acacia");
public static final ResourceKey<ConfiguredFeature<?, ?>> SPRUCE = FeatureUtils.createKey("spruce");
public static final ResourceKey<ConfiguredFeature<?, ?>> PINE = FeatureUtils.createKey("pine");
public static final ResourceKey<ConfiguredFeature<?, ?>> JUNGLE_TREE = FeatureUtils.createKey("jungle_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> FANCY_OAK = FeatureUtils.createKey("fancy_oak");
public static final ResourceKey<ConfiguredFeature<?, ?>> JUNGLE_TREE_NO_VINE = FeatureUtils.createKey("jungle_tree_no_vine");
public static final ResourceKey<ConfiguredFeature<?, ?>> MEGA_JUNGLE_TREE = FeatureUtils.createKey("mega_jungle_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> MEGA_SPRUCE = FeatureUtils.createKey("mega_spruce");
public static final ResourceKey<ConfiguredFeature<?, ?>> MEGA_PINE = FeatureUtils.createKey("mega_pine");
public static final ResourceKey<ConfiguredFeature<?, ?>> SUPER_BIRCH_BEES_0002 = FeatureUtils.createKey("super_birch_bees_0002");
public static final ResourceKey<ConfiguredFeature<?, ?>> SUPER_BIRCH_BEES = FeatureUtils.createKey("super_birch_bees");
public static final ResourceKey<ConfiguredFeature<?, ?>> SWAMP_OAK = FeatureUtils.createKey("swamp_oak");
public static final ResourceKey<ConfiguredFeature<?, ?>> JUNGLE_BUSH = FeatureUtils.createKey("jungle_bush");
public static final ResourceKey<ConfiguredFeature<?, ?>> AZALEA_TREE = FeatureUtils.createKey("azalea_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> MANGROVE = FeatureUtils.createKey("mangrove");
public static final ResourceKey<ConfiguredFeature<?, ?>> TALL_MANGROVE = FeatureUtils.createKey("tall_mangrove");
public static final ResourceKey<ConfiguredFeature<?, ?>> CHERRY = FeatureUtils.createKey("cherry");
public static final ResourceKey<ConfiguredFeature<?, ?>> OAK_BEES_0002_LEAF_LITTER = FeatureUtils.createKey("oak_bees_0002_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> OAK_BEES_002 = FeatureUtils.createKey("oak_bees_002");
public static final ResourceKey<ConfiguredFeature<?, ?>> OAK_BEES_005 = FeatureUtils.createKey("oak_bees_005");
public static final ResourceKey<ConfiguredFeature<?, ?>> BIRCH_BEES_0002 = FeatureUtils.createKey("birch_bees_0002");
public static final ResourceKey<ConfiguredFeature<?, ?>> BIRCH_BEES_0002_LEAF_LITTER = FeatureUtils.createKey("birch_bees_0002_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> BIRCH_BEES_002 = FeatureUtils.createKey("birch_bees_002");
public static final ResourceKey<ConfiguredFeature<?, ?>> BIRCH_BEES_005 = FeatureUtils.createKey("birch_bees_005");
public static final ResourceKey<ConfiguredFeature<?, ?>> FANCY_OAK_BEES_0002_LEAF_LITTER = FeatureUtils.createKey("fancy_oak_bees_0002_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> FANCY_OAK_BEES_002 = FeatureUtils.createKey("fancy_oak_bees_002");
public static final ResourceKey<ConfiguredFeature<?, ?>> FANCY_OAK_BEES_005 = FeatureUtils.createKey("fancy_oak_bees_005");
public static final ResourceKey<ConfiguredFeature<?, ?>> FANCY_OAK_BEES = FeatureUtils.createKey("fancy_oak_bees");
public static final ResourceKey<ConfiguredFeature<?, ?>> CHERRY_BEES_005 = FeatureUtils.createKey("cherry_bees_005");
public static final ResourceKey<ConfiguredFeature<?, ?>> OAK_LEAF_LITTER = FeatureUtils.createKey("oak_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> DARK_OAK_LEAF_LITTER = FeatureUtils.createKey("dark_oak_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> BIRCH_LEAF_LITTER = FeatureUtils.createKey("birch_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> FANCY_OAK_LEAF_LITTER = FeatureUtils.createKey("fancy_oak_leaf_litter");
public static final ResourceKey<ConfiguredFeature<?, ?>> FALLEN_OAK_TREE = FeatureUtils.createKey("fallen_oak_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> FALLEN_JUNGLE_TREE = FeatureUtils.createKey("fallen_jungle_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> FALLEN_SPRUCE_TREE = FeatureUtils.createKey("fallen_spruce_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> FALLEN_BIRCH_TREE = FeatureUtils.createKey("fallen_birch_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> FALLEN_SUPER_BIRCH_TREE = FeatureUtils.createKey("fallen_super_birch_tree");
private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobTree(
Block oakLog, Block oakLeaves, int baseHeight, int heightRandA, int heightRandB, int blobRadius
) {
return new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(oakLog),
new StraightTrunkPlacer(baseHeight, heightRandA, heightRandB),
BlockStateProvider.simple(oakLeaves),
new BlobFoliagePlacer(ConstantInt.of(blobRadius), ConstantInt.of(0), 3),
new TwoLayersFeatureSize(1, 0, 1)
);
}
private static TreeConfiguration.TreeConfigurationBuilder createOak() {
return createStraightBlobTree(Blocks.OAK_LOG, Blocks.OAK_LEAVES, 4, 2, 0, 2).ignoreVines();
}
private static TreeConfiguration.TreeConfigurationBuilder createDarkOak() {
return new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.DARK_OAK_LOG),
new DarkOakTrunkPlacer(6, 2, 1),
BlockStateProvider.simple(Blocks.DARK_OAK_LEAVES),
new DarkOakFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0)),
new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty())
);
}
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenOak() {
return createFallenTrees(Blocks.OAK_LOG, 4, 7).stumpDecorators(ImmutableList.of(TrunkVineDecorator.INSTANCE));
}
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenBirch(int maxHeight) {
return createFallenTrees(Blocks.BIRCH_LOG, 5, maxHeight);
}
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenJungle() {
return createFallenTrees(Blocks.JUNGLE_LOG, 4, 11).stumpDecorators(ImmutableList.of(TrunkVineDecorator.INSTANCE));
}
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenSpruce() {
return createFallenTrees(Blocks.SPRUCE_LOG, 6, 10);
}
private static FallenTreeConfiguration.FallenTreeConfigurationBuilder createFallenTrees(Block logBlock, int minLength, int maxLength) {
return new FallenTreeConfiguration.FallenTreeConfigurationBuilder(BlockStateProvider.simple(logBlock), UniformInt.of(minLength, maxLength))
.logDecorators(
ImmutableList.of(
new AttachedToLogsDecorator(
0.1F,
new WeightedStateProvider(
WeightedList.<BlockState>builder()
.add(Blocks.RED_MUSHROOM.defaultBlockState(), 2)
.add(Blocks.BROWN_MUSHROOM.defaultBlockState(), 1)
),
List.of(Direction.UP)
)
)
);
}
private static TreeConfiguration.TreeConfigurationBuilder createBirch() {
return createStraightBlobTree(Blocks.BIRCH_LOG, Blocks.BIRCH_LEAVES, 5, 2, 0, 2).ignoreVines();
}
private static TreeConfiguration.TreeConfigurationBuilder createSuperBirch() {
return createStraightBlobTree(Blocks.BIRCH_LOG, Blocks.BIRCH_LEAVES, 5, 2, 6, 2).ignoreVines();
}
private static TreeConfiguration.TreeConfigurationBuilder createJungleTree() {
return createStraightBlobTree(Blocks.JUNGLE_LOG, Blocks.JUNGLE_LEAVES, 4, 8, 0, 2);
}
private static TreeConfiguration.TreeConfigurationBuilder createFancyOak() {
return new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.OAK_LOG),
new FancyTrunkPlacer(3, 11, 0),
BlockStateProvider.simple(Blocks.OAK_LEAVES),
new FancyFoliagePlacer(ConstantInt.of(2), ConstantInt.of(4), 4),
new TwoLayersFeatureSize(0, 0, 0, OptionalInt.of(4))
)
.ignoreVines();
}
private static TreeConfiguration.TreeConfigurationBuilder cherry() {
return new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.CHERRY_LOG),
new CherryTrunkPlacer(
7,
1,
0,
new WeightedListInt(
WeightedList.<IntProvider>builder().add(ConstantInt.of(1), 1).add(ConstantInt.of(2), 1).add(ConstantInt.of(3), 1).build()
),
UniformInt.of(2, 4),
UniformInt.of(-4, -3),
UniformInt.of(-1, 0)
),
BlockStateProvider.simple(Blocks.CHERRY_LEAVES),
new CherryFoliagePlacer(ConstantInt.of(4), ConstantInt.of(0), ConstantInt.of(5), 0.25F, 0.5F, 0.16666667F, 0.33333334F),
new TwoLayersFeatureSize(1, 0, 2)
)
.ignoreVines();
}
public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) {
HolderGetter<Block> blocks = context.lookup(Registries.BLOCK);
BlockPredicate stemReplaceableBlocks = BlockPredicate.matchesBlocks(
Blocks.OAK_SAPLING,
Blocks.SPRUCE_SAPLING,
Blocks.BIRCH_SAPLING,
Blocks.JUNGLE_SAPLING,
Blocks.ACACIA_SAPLING,
Blocks.CHERRY_SAPLING,
Blocks.DARK_OAK_SAPLING,
Blocks.PALE_OAK_SAPLING,
Blocks.MANGROVE_PROPAGULE,
Blocks.DANDELION,
Blocks.TORCHFLOWER,
Blocks.POPPY,
Blocks.BLUE_ORCHID,
Blocks.ALLIUM,
Blocks.AZURE_BLUET,
Blocks.RED_TULIP,
Blocks.ORANGE_TULIP,
Blocks.WHITE_TULIP,
Blocks.PINK_TULIP,
Blocks.OXEYE_DAISY,
Blocks.CORNFLOWER,
Blocks.WITHER_ROSE,
Blocks.LILY_OF_THE_VALLEY,
Blocks.BROWN_MUSHROOM,
Blocks.RED_MUSHROOM,
Blocks.WHEAT,
Blocks.SUGAR_CANE,
Blocks.ATTACHED_PUMPKIN_STEM,
Blocks.ATTACHED_MELON_STEM,
Blocks.PUMPKIN_STEM,
Blocks.MELON_STEM,
Blocks.LILY_PAD,
Blocks.NETHER_WART,
Blocks.COCOA,
Blocks.CARROTS,
Blocks.POTATOES,
Blocks.CHORUS_PLANT,
Blocks.CHORUS_FLOWER,
Blocks.TORCHFLOWER_CROP,
Blocks.PITCHER_CROP,
Blocks.BEETROOTS,
Blocks.SWEET_BERRY_BUSH,
Blocks.WARPED_FUNGUS,
Blocks.CRIMSON_FUNGUS,
Blocks.WEEPING_VINES,
Blocks.WEEPING_VINES_PLANT,
Blocks.TWISTING_VINES,
Blocks.TWISTING_VINES_PLANT,
Blocks.CAVE_VINES,
Blocks.CAVE_VINES_PLANT,
Blocks.SPORE_BLOSSOM,
Blocks.AZALEA,
Blocks.FLOWERING_AZALEA,
Blocks.MOSS_CARPET,
Blocks.PINK_PETALS,
Blocks.WILDFLOWERS,
Blocks.BIG_DRIPLEAF,
Blocks.BIG_DRIPLEAF_STEM,
Blocks.SMALL_DRIPLEAF
);
FeatureUtils.register(
context,
CRIMSON_FUNGUS,
Feature.HUGE_FUNGUS,
new HugeFungusConfiguration(
Blocks.CRIMSON_NYLIUM.defaultBlockState(),
Blocks.CRIMSON_STEM.defaultBlockState(),
Blocks.NETHER_WART_BLOCK.defaultBlockState(),
Blocks.SHROOMLIGHT.defaultBlockState(),
stemReplaceableBlocks,
false
)
);
FeatureUtils.register(
context,
CRIMSON_FUNGUS_PLANTED,
Feature.HUGE_FUNGUS,
new HugeFungusConfiguration(
Blocks.CRIMSON_NYLIUM.defaultBlockState(),
Blocks.CRIMSON_STEM.defaultBlockState(),
Blocks.NETHER_WART_BLOCK.defaultBlockState(),
Blocks.SHROOMLIGHT.defaultBlockState(),
stemReplaceableBlocks,
true
)
);
FeatureUtils.register(
context,
WARPED_FUNGUS,
Feature.HUGE_FUNGUS,
new HugeFungusConfiguration(
Blocks.WARPED_NYLIUM.defaultBlockState(),
Blocks.WARPED_STEM.defaultBlockState(),
Blocks.WARPED_WART_BLOCK.defaultBlockState(),
Blocks.SHROOMLIGHT.defaultBlockState(),
stemReplaceableBlocks,
false
)
);
FeatureUtils.register(
context,
WARPED_FUNGUS_PLANTED,
Feature.HUGE_FUNGUS,
new HugeFungusConfiguration(
Blocks.WARPED_NYLIUM.defaultBlockState(),
Blocks.WARPED_STEM.defaultBlockState(),
Blocks.WARPED_WART_BLOCK.defaultBlockState(),
Blocks.SHROOMLIGHT.defaultBlockState(),
stemReplaceableBlocks,
true
)
);
FeatureUtils.register(
context,
HUGE_BROWN_MUSHROOM,
Feature.HUGE_BROWN_MUSHROOM,
new HugeMushroomFeatureConfiguration(
BlockStateProvider.simple(
Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.UP, true).setValue(HugeMushroomBlock.DOWN, false)
),
BlockStateProvider.simple(
Blocks.MUSHROOM_STEM.defaultBlockState().setValue(HugeMushroomBlock.UP, false).setValue(HugeMushroomBlock.DOWN, false)
),
3,
BlockPredicate.matchesTag(BlockTags.HUGE_BROWN_MUSHROOM_CAN_PLACE_ON)
)
);
FeatureUtils.register(
context,
HUGE_RED_MUSHROOM,
Feature.HUGE_RED_MUSHROOM,
new HugeMushroomFeatureConfiguration(
BlockStateProvider.simple(Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)),
BlockStateProvider.simple(
Blocks.MUSHROOM_STEM.defaultBlockState().setValue(HugeMushroomBlock.UP, false).setValue(HugeMushroomBlock.DOWN, false)
),
2,
BlockPredicate.matchesTag(BlockTags.HUGE_RED_MUSHROOM_CAN_PLACE_ON)
)
);
BeehiveDecorator beehive0002 = new BeehiveDecorator(0.002F);
BeehiveDecorator beehive001 = new BeehiveDecorator(0.01F);
BeehiveDecorator beehive002 = new BeehiveDecorator(0.02F);
BeehiveDecorator beehive005 = new BeehiveDecorator(0.05F);
BeehiveDecorator beehive = new BeehiveDecorator(1.0F);
PlaceOnGroundDecorator sparseLeafLitter = new PlaceOnGroundDecorator(
96, 4, 2, new WeightedStateProvider(VegetationFeatures.leafLitterPatchBuilder(1, 3))
);
PlaceOnGroundDecorator thickLeafLitter = new PlaceOnGroundDecorator(
150, 2, 2, new WeightedStateProvider(VegetationFeatures.leafLitterPatchBuilder(1, 4))
);
FeatureUtils.register(context, OAK, Feature.TREE, createOak().build());
FeatureUtils.register(context, DARK_OAK, Feature.TREE, createDarkOak().ignoreVines().build());
FeatureUtils.register(
context,
PALE_OAK,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.PALE_OAK_LOG),
new DarkOakTrunkPlacer(6, 2, 1),
BlockStateProvider.simple(Blocks.PALE_OAK_LEAVES),
new DarkOakFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0)),
new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty())
)
.decorators(ImmutableList.of(new PaleMossDecorator(0.15F, 0.4F, 0.8F)))
.ignoreVines()
.build()
);
FeatureUtils.register(
context,
PALE_OAK_BONEMEAL,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.PALE_OAK_LOG),
new DarkOakTrunkPlacer(6, 2, 1),
BlockStateProvider.simple(Blocks.PALE_OAK_LEAVES),
new DarkOakFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0)),
new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty())
)
.ignoreVines()
.build()
);
FeatureUtils.register(
context,
PALE_OAK_CREAKING,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.PALE_OAK_LOG),
new DarkOakTrunkPlacer(6, 2, 1),
BlockStateProvider.simple(Blocks.PALE_OAK_LEAVES),
new DarkOakFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0)),
new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty())
)
.decorators(ImmutableList.of(new PaleMossDecorator(0.15F, 0.4F, 0.8F), new CreakingHeartDecorator(1.0F)))
.ignoreVines()
.build()
);
FeatureUtils.register(context, BIRCH, Feature.TREE, createBirch().build());
FeatureUtils.register(
context,
ACACIA,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.ACACIA_LOG),
new ForkingTrunkPlacer(5, 2, 2),
BlockStateProvider.simple(Blocks.ACACIA_LEAVES),
new AcaciaFoliagePlacer(ConstantInt.of(2), ConstantInt.of(0)),
new TwoLayersFeatureSize(1, 0, 2)
)
.ignoreVines()
.build()
);
FeatureUtils.register(context, CHERRY, Feature.TREE, cherry().build());
FeatureUtils.register(context, CHERRY_BEES_005, Feature.TREE, cherry().decorators(List.of(beehive005)).build());
FeatureUtils.register(
context,
SPRUCE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.SPRUCE_LOG),
new StraightTrunkPlacer(5, 2, 1),
BlockStateProvider.simple(Blocks.SPRUCE_LEAVES),
new SpruceFoliagePlacer(UniformInt.of(2, 3), UniformInt.of(0, 2), UniformInt.of(1, 2)),
new TwoLayersFeatureSize(2, 0, 2)
)
.ignoreVines()
.build()
);
FeatureUtils.register(
context,
PINE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.SPRUCE_LOG),
new StraightTrunkPlacer(6, 4, 0),
BlockStateProvider.simple(Blocks.SPRUCE_LEAVES),
new PineFoliagePlacer(ConstantInt.of(1), ConstantInt.of(1), UniformInt.of(3, 4)),
new TwoLayersFeatureSize(2, 0, 2)
)
.ignoreVines()
.build()
);
FeatureUtils.register(
context,
JUNGLE_TREE,
Feature.TREE,
createJungleTree()
.decorators(ImmutableList.of(new CocoaDecorator(0.2F), TrunkVineDecorator.INSTANCE, new LeaveVineDecorator(0.25F)))
.ignoreVines()
.build()
);
FeatureUtils.register(context, FANCY_OAK, Feature.TREE, createFancyOak().build());
FeatureUtils.register(context, JUNGLE_TREE_NO_VINE, Feature.TREE, createJungleTree().ignoreVines().build());
FeatureUtils.register(
context,
MEGA_JUNGLE_TREE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.JUNGLE_LOG),
new MegaJungleTrunkPlacer(10, 2, 19),
BlockStateProvider.simple(Blocks.JUNGLE_LEAVES),
new MegaJungleFoliagePlacer(ConstantInt.of(2), ConstantInt.of(0), 2),
new TwoLayersFeatureSize(1, 1, 2)
)
.decorators(ImmutableList.of(TrunkVineDecorator.INSTANCE, new LeaveVineDecorator(0.25F)))
.build()
);
FeatureUtils.register(
context,
MEGA_SPRUCE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.SPRUCE_LOG),
new GiantTrunkPlacer(13, 2, 14),
BlockStateProvider.simple(Blocks.SPRUCE_LEAVES),
new MegaPineFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0), UniformInt.of(13, 17)),
new TwoLayersFeatureSize(1, 1, 2)
)
.decorators(
ImmutableList.of(
new AlterGroundDecorator(
RuleBasedStateProvider.ifTrueThenProvide(BlockPredicate.matchesTag(BlockTags.BENEATH_TREE_PODZOL_REPLACEABLE), Blocks.PODZOL)
)
)
)
.build()
);
FeatureUtils.register(
context,
MEGA_PINE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.SPRUCE_LOG),
new GiantTrunkPlacer(13, 2, 14),
BlockStateProvider.simple(Blocks.SPRUCE_LEAVES),
new MegaPineFoliagePlacer(ConstantInt.of(0), ConstantInt.of(0), UniformInt.of(3, 7)),
new TwoLayersFeatureSize(1, 1, 2)
)
.decorators(
ImmutableList.of(
new AlterGroundDecorator(
RuleBasedStateProvider.ifTrueThenProvide(BlockPredicate.matchesTag(BlockTags.BENEATH_TREE_PODZOL_REPLACEABLE), Blocks.PODZOL)
)
)
)
.build()
);
FeatureUtils.register(context, SUPER_BIRCH_BEES_0002, Feature.TREE, createSuperBirch().decorators(ImmutableList.of(beehive0002)).build());
FeatureUtils.register(context, SUPER_BIRCH_BEES, Feature.TREE, createSuperBirch().decorators(ImmutableList.of(beehive)).build());
FeatureUtils.register(
context,
SWAMP_OAK,
Feature.TREE,
createStraightBlobTree(Blocks.OAK_LOG, Blocks.OAK_LEAVES, 5, 3, 0, 3).decorators(ImmutableList.of(new LeaveVineDecorator(0.25F))).build()
);
FeatureUtils.register(
context,
JUNGLE_BUSH,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.JUNGLE_LOG),
new StraightTrunkPlacer(1, 0, 0),
BlockStateProvider.simple(Blocks.OAK_LEAVES),
new BushFoliagePlacer(ConstantInt.of(2), ConstantInt.of(1), 2),
new TwoLayersFeatureSize(0, 0, 0)
)
.build()
);
FeatureUtils.register(
context,
AZALEA_TREE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.OAK_LOG),
new BendingTrunkPlacer(4, 2, 0, 3, UniformInt.of(1, 2)),
new WeightedStateProvider(
WeightedList.<BlockState>builder()
.add(Blocks.AZALEA_LEAVES.defaultBlockState(), 3)
.add(Blocks.FLOWERING_AZALEA_LEAVES.defaultBlockState(), 1)
),
new RandomSpreadFoliagePlacer(ConstantInt.of(3), ConstantInt.of(0), ConstantInt.of(2), 50),
new TwoLayersFeatureSize(1, 0, 1)
)
.belowTrunkProvider(BlockStateProvider.simple(Blocks.ROOTED_DIRT))
.build()
);
FeatureUtils.register(
context,
MANGROVE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.MANGROVE_LOG),
new UpwardsBranchingTrunkPlacer(
2, 1, 4, UniformInt.of(1, 4), 0.5F, UniformInt.of(0, 1), blocks.getOrThrow(BlockTags.MANGROVE_LOGS_CAN_GROW_THROUGH)
),
BlockStateProvider.simple(Blocks.MANGROVE_LEAVES),
new RandomSpreadFoliagePlacer(ConstantInt.of(3), ConstantInt.of(0), ConstantInt.of(2), 70),
Optional.of(
new MangroveRootPlacer(
UniformInt.of(1, 3),
BlockStateProvider.simple(Blocks.MANGROVE_ROOTS),
Optional.of(new AboveRootPlacement(BlockStateProvider.simple(Blocks.MOSS_CARPET), 0.5F)),
new MangroveRootPlacement(
blocks.getOrThrow(BlockTags.MANGROVE_ROOTS_CAN_GROW_THROUGH),
HolderSet.direct(Block::builtInRegistryHolder, Blocks.MUD, Blocks.MUDDY_MANGROVE_ROOTS),
BlockStateProvider.simple(Blocks.MUDDY_MANGROVE_ROOTS),
8,
15,
0.2F
)
)
),
new TwoLayersFeatureSize(2, 0, 2),
TreeConfiguration.PLACE_BELOW_OVERWORLD_TRUNKS
)
.decorators(
List.of(
new LeaveVineDecorator(0.125F),
new AttachedToLeavesDecorator(
0.14F,
1,
0,
new RandomizedIntStateProvider(
BlockStateProvider.simple(Blocks.MANGROVE_PROPAGULE.defaultBlockState().setValue(MangrovePropaguleBlock.HANGING, true)),
MangrovePropaguleBlock.AGE,
UniformInt.of(0, 4)
),
2,
List.of(Direction.DOWN)
),
beehive001
)
)
.ignoreVines()
.build()
);
FeatureUtils.register(
context,
TALL_MANGROVE,
Feature.TREE,
new TreeConfiguration.TreeConfigurationBuilder(
BlockStateProvider.simple(Blocks.MANGROVE_LOG),
new UpwardsBranchingTrunkPlacer(
4, 1, 9, UniformInt.of(1, 6), 0.5F, UniformInt.of(0, 1), blocks.getOrThrow(BlockTags.MANGROVE_LOGS_CAN_GROW_THROUGH)
),
BlockStateProvider.simple(Blocks.MANGROVE_LEAVES),
new RandomSpreadFoliagePlacer(ConstantInt.of(3), ConstantInt.of(0), ConstantInt.of(2), 70),
Optional.of(
new MangroveRootPlacer(
UniformInt.of(3, 7),
BlockStateProvider.simple(Blocks.MANGROVE_ROOTS),
Optional.of(new AboveRootPlacement(BlockStateProvider.simple(Blocks.MOSS_CARPET), 0.5F)),
new MangroveRootPlacement(
blocks.getOrThrow(BlockTags.MANGROVE_ROOTS_CAN_GROW_THROUGH),
HolderSet.direct(Block::builtInRegistryHolder, Blocks.MUD, Blocks.MUDDY_MANGROVE_ROOTS),
BlockStateProvider.simple(Blocks.MUDDY_MANGROVE_ROOTS),
8,
15,
0.2F
)
)
),
new TwoLayersFeatureSize(3, 0, 2),
TreeConfiguration.PLACE_BELOW_OVERWORLD_TRUNKS
)
.decorators(
List.of(
new LeaveVineDecorator(0.125F),
new AttachedToLeavesDecorator(
0.14F,
1,
0,
new RandomizedIntStateProvider(
BlockStateProvider.simple(Blocks.MANGROVE_PROPAGULE.defaultBlockState().setValue(MangrovePropaguleBlock.HANGING, true)),
MangrovePropaguleBlock.AGE,
UniformInt.of(0, 4)
),
2,
List.of(Direction.DOWN)
),
beehive001
)
)
.ignoreVines()
.build()
);
FeatureUtils.register(
context, OAK_BEES_0002_LEAF_LITTER, Feature.TREE, createOak().decorators(List.of(beehive0002, sparseLeafLitter, thickLeafLitter)).build()
);
FeatureUtils.register(context, OAK_BEES_002, Feature.TREE, createOak().decorators(List.of(beehive002)).build());
FeatureUtils.register(context, OAK_BEES_005, Feature.TREE, createOak().decorators(List.of(beehive005)).build());
FeatureUtils.register(context, BIRCH_BEES_0002, Feature.TREE, createBirch().decorators(List.of(beehive0002)).build());
FeatureUtils.register(
context, BIRCH_BEES_0002_LEAF_LITTER, Feature.TREE, createBirch().decorators(List.of(beehive0002, sparseLeafLitter, thickLeafLitter)).build()
);
FeatureUtils.register(context, BIRCH_BEES_002, Feature.TREE, createBirch().decorators(List.of(beehive002)).build());
FeatureUtils.register(context, BIRCH_BEES_005, Feature.TREE, createBirch().decorators(List.of(beehive005)).build());
FeatureUtils.register(
context,
FANCY_OAK_BEES_0002_LEAF_LITTER,
Feature.TREE,
createFancyOak().decorators(List.of(beehive0002, sparseLeafLitter, thickLeafLitter)).build()
);
FeatureUtils.register(context, FANCY_OAK_BEES_002, Feature.TREE, createFancyOak().decorators(List.of(beehive002)).build());
FeatureUtils.register(context, FANCY_OAK_BEES_005, Feature.TREE, createFancyOak().decorators(List.of(beehive005)).build());
FeatureUtils.register(context, FANCY_OAK_BEES, Feature.TREE, createFancyOak().decorators(List.of(beehive)).build());
FeatureUtils.register(context, OAK_LEAF_LITTER, Feature.TREE, createOak().decorators(ImmutableList.of(sparseLeafLitter, thickLeafLitter)).build());
FeatureUtils.register(
context, DARK_OAK_LEAF_LITTER, Feature.TREE, createDarkOak().ignoreVines().decorators(ImmutableList.of(sparseLeafLitter, thickLeafLitter)).build()
);
FeatureUtils.register(context, BIRCH_LEAF_LITTER, Feature.TREE, createBirch().decorators(ImmutableList.of(sparseLeafLitter, thickLeafLitter)).build());
FeatureUtils.register(context, FANCY_OAK_LEAF_LITTER, Feature.TREE, createFancyOak().decorators(List.of(sparseLeafLitter, thickLeafLitter)).build());
FeatureUtils.register(context, FALLEN_OAK_TREE, Feature.FALLEN_TREE, createFallenOak().build());
FeatureUtils.register(context, FALLEN_BIRCH_TREE, Feature.FALLEN_TREE, createFallenBirch(8).build());
FeatureUtils.register(context, FALLEN_SUPER_BIRCH_TREE, Feature.FALLEN_TREE, createFallenBirch(15).build());
FeatureUtils.register(context, FALLEN_JUNGLE_TREE, Feature.FALLEN_TREE, createFallenJungle().build());
FeatureUtils.register(context, FALLEN_SPRUCE_TREE, Feature.FALLEN_TREE, createFallenSpruce().build());
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
HolderSet.direct()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
FeatureUtils.createKey(), FeatureUtils.register()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
VegetationFeatures.leafLitterPatchBuilder()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ConstantInt.of()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
UniformInt.of()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
WeightedListInt()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BlockPredicate.matchesBlocks(), BlockPredicate.matchesTag()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
HugeFungusConfiguration()
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
FallenTreeConfiguration.FallenTreeConfigurationBuilder(), FallenTreeConfigurationBuilder()
- 引用位置:
-
HugeMushroomFeatureConfiguration
- 引用位置:
构造调用 - 关联成员:
HugeMushroomFeatureConfiguration()
- 引用位置:
-
- 引用位置:
方法调用/构造调用/返回值 - 关联成员:
TreeConfiguration.TreeConfigurationBuilder(), TreeConfigurationBuilder()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ThreeLayersFeatureSize()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
TwoLayersFeatureSize()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AcaciaFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BlobFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BushFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CherryFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
DarkOakFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
FancyFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
MegaJungleFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
MegaPineFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
PineFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
RandomSpreadFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
SpruceFoliagePlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AboveRootPlacement()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
MangroveRootPlacement()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
MangroveRootPlacer()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BlockStateProvider.simple()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
RandomizedIntStateProvider()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RuleBasedStateProvider.ifTrueThenProvide()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
WeightedStateProvider()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AlterGroundDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AttachedToLeavesDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AttachedToLogsDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BeehiveDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CocoaDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CreakingHeartDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
LeaveVineDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
PaleMossDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
PlaceOnGroundDecorator()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
BendingTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
CherryTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
DarkOakTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
FancyTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ForkingTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GiantTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
MegaJungleTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
StraightTrunkPlacer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
UpwardsBranchingTrunkPlacer()
- 引用位置: