CaveFeatures.java
net.minecraft.data.worldgen.features.CaveFeatures
信息
- 全限定名:net.minecraft.data.worldgen.features.CaveFeatures
- 类型:public class
- 包:net.minecraft.data.worldgen.features
- 源码路径:src/main/java/net/minecraft/data/worldgen/features/CaveFeatures.java
- 起始行号:L59
- 职责:
TODO
字段/常量
-
MONSTER_ROOM- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L60 - 说明:
TODO
- 类型:
-
FOSSIL_COAL- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L61 - 说明:
TODO
- 类型:
-
FOSSIL_DIAMONDS- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L62 - 说明:
TODO
- 类型:
-
DRIPSTONE_CLUSTER- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L63 - 说明:
TODO
- 类型:
-
LARGE_DRIPSTONE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L64 - 说明:
TODO
- 类型:
-
POINTED_DRIPSTONE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L65 - 说明:
TODO
- 类型:
-
UNDERWATER_MAGMA- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L66 - 说明:
TODO
- 类型:
-
GLOW_LICHEN- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L67 - 说明:
TODO
- 类型:
-
ROOTED_AZALEA_TREE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L68 - 说明:
TODO
- 类型:
-
CAVE_VINE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L69 - 说明:
TODO
- 类型:
-
CAVE_VINE_IN_MOSS- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L70 - 说明:
TODO
- 类型:
-
MOSS_VEGETATION- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L71 - 说明:
TODO
- 类型:
-
MOSS_PATCH- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L72 - 说明:
TODO
- 类型:
-
MOSS_PATCH_BONEMEAL- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L73 - 说明:
TODO
- 类型:
-
DRIPLEAF- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L74 - 说明:
TODO
- 类型:
-
CLAY_WITH_DRIPLEAVES- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L75 - 说明:
TODO
- 类型:
-
CLAY_POOL_WITH_DRIPLEAVES- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L76 - 说明:
TODO
- 类型:
-
LUSH_CAVES_CLAY- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L77 - 说明:
TODO
- 类型:
-
MOSS_PATCH_CEILING- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L78 - 说明:
TODO
- 类型:
-
SPORE_BLOSSOM- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L79 - 说明:
TODO
- 类型:
-
AMETHYST_GEODE- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L80 - 说明:
TODO
- 类型:
-
SCULK_PATCH_DEEP_DARK- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L81 - 说明:
TODO
- 类型:
-
SCULK_PATCH_ANCIENT_CITY- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L82 - 说明:
TODO
- 类型:
-
SCULK_VEIN- 类型:
ResourceKey<ConfiguredFeature<?,?>> - 修饰符:
public static final - 源码定位:
L83 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
private static Holder<PlacedFeature> makeDripleaf(Direction direction) @ L85
- 方法名:makeDripleaf
- 源码定位:L85
- 返回类型:Holder
- 修饰符:private static
参数:
- direction: Direction
说明:
TODO
private static Holder<PlacedFeature> makeSmallDripleaf() @ L106
- 方法名:makeSmallDripleaf
- 源码定位:L106
- 返回类型:Holder
- 修饰符:private static
参数:
- 无
说明:
TODO
public static void bootstrap(BootstrapContext<ConfiguredFeature<?,?>> context) @ L121
- 方法名:bootstrap
- 源码定位:L121
- 返回类型:void
- 修饰符:public static
参数:
- context: BootstrapContext<ConfiguredFeature>
说明:
TODO
代码
public class CaveFeatures {
public static final ResourceKey<ConfiguredFeature<?, ?>> MONSTER_ROOM = FeatureUtils.createKey("monster_room");
public static final ResourceKey<ConfiguredFeature<?, ?>> FOSSIL_COAL = FeatureUtils.createKey("fossil_coal");
public static final ResourceKey<ConfiguredFeature<?, ?>> FOSSIL_DIAMONDS = FeatureUtils.createKey("fossil_diamonds");
public static final ResourceKey<ConfiguredFeature<?, ?>> DRIPSTONE_CLUSTER = FeatureUtils.createKey("dripstone_cluster");
public static final ResourceKey<ConfiguredFeature<?, ?>> LARGE_DRIPSTONE = FeatureUtils.createKey("large_dripstone");
public static final ResourceKey<ConfiguredFeature<?, ?>> POINTED_DRIPSTONE = FeatureUtils.createKey("pointed_dripstone");
public static final ResourceKey<ConfiguredFeature<?, ?>> UNDERWATER_MAGMA = FeatureUtils.createKey("underwater_magma");
public static final ResourceKey<ConfiguredFeature<?, ?>> GLOW_LICHEN = FeatureUtils.createKey("glow_lichen");
public static final ResourceKey<ConfiguredFeature<?, ?>> ROOTED_AZALEA_TREE = FeatureUtils.createKey("rooted_azalea_tree");
public static final ResourceKey<ConfiguredFeature<?, ?>> CAVE_VINE = FeatureUtils.createKey("cave_vine");
public static final ResourceKey<ConfiguredFeature<?, ?>> CAVE_VINE_IN_MOSS = FeatureUtils.createKey("cave_vine_in_moss");
public static final ResourceKey<ConfiguredFeature<?, ?>> MOSS_VEGETATION = FeatureUtils.createKey("moss_vegetation");
public static final ResourceKey<ConfiguredFeature<?, ?>> MOSS_PATCH = FeatureUtils.createKey("moss_patch");
public static final ResourceKey<ConfiguredFeature<?, ?>> MOSS_PATCH_BONEMEAL = FeatureUtils.createKey("moss_patch_bonemeal");
public static final ResourceKey<ConfiguredFeature<?, ?>> DRIPLEAF = FeatureUtils.createKey("dripleaf");
public static final ResourceKey<ConfiguredFeature<?, ?>> CLAY_WITH_DRIPLEAVES = FeatureUtils.createKey("clay_with_dripleaves");
public static final ResourceKey<ConfiguredFeature<?, ?>> CLAY_POOL_WITH_DRIPLEAVES = FeatureUtils.createKey("clay_pool_with_dripleaves");
public static final ResourceKey<ConfiguredFeature<?, ?>> LUSH_CAVES_CLAY = FeatureUtils.createKey("lush_caves_clay");
public static final ResourceKey<ConfiguredFeature<?, ?>> MOSS_PATCH_CEILING = FeatureUtils.createKey("moss_patch_ceiling");
public static final ResourceKey<ConfiguredFeature<?, ?>> SPORE_BLOSSOM = FeatureUtils.createKey("spore_blossom");
public static final ResourceKey<ConfiguredFeature<?, ?>> AMETHYST_GEODE = FeatureUtils.createKey("amethyst_geode");
public static final ResourceKey<ConfiguredFeature<?, ?>> SCULK_PATCH_DEEP_DARK = FeatureUtils.createKey("sculk_patch_deep_dark");
public static final ResourceKey<ConfiguredFeature<?, ?>> SCULK_PATCH_ANCIENT_CITY = FeatureUtils.createKey("sculk_patch_ancient_city");
public static final ResourceKey<ConfiguredFeature<?, ?>> SCULK_VEIN = FeatureUtils.createKey("sculk_vein");
private static Holder<PlacedFeature> makeDripleaf(Direction direction) {
return PlacementUtils.inlinePlaced(
Feature.BLOCK_COLUMN,
new BlockColumnConfiguration(
List.of(
BlockColumnConfiguration.layer(
new WeightedListInt(WeightedList.<IntProvider>builder().add(UniformInt.of(0, 4), 2).add(ConstantInt.of(0), 1).build()),
BlockStateProvider.simple(Blocks.BIG_DRIPLEAF_STEM.defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, direction))
),
BlockColumnConfiguration.layer(
ConstantInt.of(1),
BlockStateProvider.simple(Blocks.BIG_DRIPLEAF.defaultBlockState().setValue(BlockStateProperties.HORIZONTAL_FACING, direction))
)
),
Direction.UP,
BlockPredicate.ONLY_IN_AIR_OR_WATER_PREDICATE,
true
)
);
}
private static Holder<PlacedFeature> makeSmallDripleaf() {
return PlacementUtils.inlinePlaced(
Feature.SIMPLE_BLOCK,
new SimpleBlockConfiguration(
new WeightedStateProvider(
WeightedList.<BlockState>builder()
.add(Blocks.SMALL_DRIPLEAF.defaultBlockState().setValue(SmallDripleafBlock.FACING, Direction.EAST), 1)
.add(Blocks.SMALL_DRIPLEAF.defaultBlockState().setValue(SmallDripleafBlock.FACING, Direction.WEST), 1)
.add(Blocks.SMALL_DRIPLEAF.defaultBlockState().setValue(SmallDripleafBlock.FACING, Direction.NORTH), 1)
.add(Blocks.SMALL_DRIPLEAF.defaultBlockState().setValue(SmallDripleafBlock.FACING, Direction.SOUTH), 1)
)
)
);
}
public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) {
HolderGetter<ConfiguredFeature<?, ?>> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE);
HolderGetter<StructureProcessorList> processorLists = context.lookup(Registries.PROCESSOR_LIST);
FeatureUtils.register(context, MONSTER_ROOM, Feature.MONSTER_ROOM);
List<Identifier> fossilStructures = List.of(
Identifier.withDefaultNamespace("fossil/spine_1"),
Identifier.withDefaultNamespace("fossil/spine_2"),
Identifier.withDefaultNamespace("fossil/spine_3"),
Identifier.withDefaultNamespace("fossil/spine_4"),
Identifier.withDefaultNamespace("fossil/skull_1"),
Identifier.withDefaultNamespace("fossil/skull_2"),
Identifier.withDefaultNamespace("fossil/skull_3"),
Identifier.withDefaultNamespace("fossil/skull_4")
);
List<Identifier> fossilCoalStructures = List.of(
Identifier.withDefaultNamespace("fossil/spine_1_coal"),
Identifier.withDefaultNamespace("fossil/spine_2_coal"),
Identifier.withDefaultNamespace("fossil/spine_3_coal"),
Identifier.withDefaultNamespace("fossil/spine_4_coal"),
Identifier.withDefaultNamespace("fossil/skull_1_coal"),
Identifier.withDefaultNamespace("fossil/skull_2_coal"),
Identifier.withDefaultNamespace("fossil/skull_3_coal"),
Identifier.withDefaultNamespace("fossil/skull_4_coal")
);
Holder<StructureProcessorList> fossilRot = processorLists.getOrThrow(ProcessorLists.FOSSIL_ROT);
FeatureUtils.register(
context,
FOSSIL_COAL,
Feature.FOSSIL,
new FossilFeatureConfiguration(fossilStructures, fossilCoalStructures, fossilRot, processorLists.getOrThrow(ProcessorLists.FOSSIL_COAL), 4)
);
FeatureUtils.register(
context,
FOSSIL_DIAMONDS,
Feature.FOSSIL,
new FossilFeatureConfiguration(fossilStructures, fossilCoalStructures, fossilRot, processorLists.getOrThrow(ProcessorLists.FOSSIL_DIAMONDS), 4)
);
FeatureUtils.register(
context,
DRIPSTONE_CLUSTER,
Feature.DRIPSTONE_CLUSTER,
new DripstoneClusterConfiguration(
12,
UniformInt.of(3, 6),
UniformInt.of(2, 8),
1,
3,
UniformInt.of(2, 4),
UniformFloat.of(0.3F, 0.7F),
ClampedNormalFloat.of(0.1F, 0.3F, 0.1F, 0.9F),
0.1F,
3,
8
)
);
FeatureUtils.register(
context,
LARGE_DRIPSTONE,
Feature.LARGE_DRIPSTONE,
new LargeDripstoneConfiguration(
30,
UniformInt.of(3, 19),
UniformFloat.of(0.4F, 2.0F),
0.33F,
UniformFloat.of(0.3F, 0.9F),
UniformFloat.of(0.4F, 1.0F),
UniformFloat.of(0.0F, 0.3F),
4,
0.6F
)
);
FeatureUtils.register(
context,
POINTED_DRIPSTONE,
Feature.SIMPLE_RANDOM_SELECTOR,
new SimpleRandomFeatureConfiguration(
HolderSet.direct(
PlacementUtils.inlinePlaced(
Feature.POINTED_DRIPSTONE,
new PointedDripstoneConfiguration(0.2F, 0.7F, 0.5F, 0.5F),
EnvironmentScanPlacement.scanningFor(Direction.DOWN, BlockPredicate.solid(), BlockPredicate.ONLY_IN_AIR_OR_WATER_PREDICATE, 12),
RandomOffsetPlacement.vertical(ConstantInt.of(1))
),
PlacementUtils.inlinePlaced(
Feature.POINTED_DRIPSTONE,
new PointedDripstoneConfiguration(0.2F, 0.7F, 0.5F, 0.5F),
EnvironmentScanPlacement.scanningFor(Direction.UP, BlockPredicate.solid(), BlockPredicate.ONLY_IN_AIR_OR_WATER_PREDICATE, 12),
RandomOffsetPlacement.vertical(ConstantInt.of(-1))
)
)
)
);
FeatureUtils.register(context, UNDERWATER_MAGMA, Feature.UNDERWATER_MAGMA, new UnderwaterMagmaConfiguration(5, 1, 0.5F));
MultifaceSpreadeableBlock glowLichenBlock = (MultifaceSpreadeableBlock)Blocks.GLOW_LICHEN;
FeatureUtils.register(
context,
GLOW_LICHEN,
Feature.MULTIFACE_GROWTH,
new MultifaceGrowthConfiguration(
glowLichenBlock,
20,
false,
true,
true,
0.5F,
HolderSet.direct(
Block::builtInRegistryHolder,
Blocks.STONE,
Blocks.ANDESITE,
Blocks.DIORITE,
Blocks.GRANITE,
Blocks.DRIPSTONE_BLOCK,
Blocks.CALCITE,
Blocks.TUFF,
Blocks.DEEPSLATE
)
)
);
FeatureUtils.register(
context,
ROOTED_AZALEA_TREE,
Feature.ROOT_SYSTEM,
new RootSystemConfiguration(
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(TreeFeatures.AZALEA_TREE)),
3,
3,
BlockTags.AZALEA_ROOT_REPLACEABLE,
BlockStateProvider.simple(Blocks.ROOTED_DIRT),
20,
100,
3,
2,
BlockStateProvider.simple(Blocks.HANGING_ROOTS),
20,
2,
BlockPredicate.allOf(
BlockPredicate.anyOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.matchesTag(BlockTags.REPLACEABLE_BY_TREES)),
BlockPredicate.matchesTag(Direction.DOWN.getUnitVec3i(), BlockTags.AZALEA_GROWS_ON)
)
)
);
WeightedStateProvider caveVinesBodyProvider = new WeightedStateProvider(
WeightedList.<BlockState>builder()
.add(Blocks.CAVE_VINES_PLANT.defaultBlockState(), 4)
.add(Blocks.CAVE_VINES_PLANT.defaultBlockState().setValue(CaveVines.BERRIES, true), 1)
);
RandomizedIntStateProvider caveVinesHeadProvider = new RandomizedIntStateProvider(
new WeightedStateProvider(
WeightedList.<BlockState>builder()
.add(Blocks.CAVE_VINES.defaultBlockState(), 4)
.add(Blocks.CAVE_VINES.defaultBlockState().setValue(CaveVines.BERRIES, true), 1)
),
CaveVinesBlock.AGE,
UniformInt.of(23, 25)
);
FeatureUtils.register(
context,
CAVE_VINE,
Feature.BLOCK_COLUMN,
new BlockColumnConfiguration(
List.of(
BlockColumnConfiguration.layer(
new WeightedListInt(
WeightedList.<IntProvider>builder().add(UniformInt.of(0, 19), 2).add(UniformInt.of(0, 2), 3).add(UniformInt.of(0, 6), 10).build()
),
caveVinesBodyProvider
),
BlockColumnConfiguration.layer(ConstantInt.of(1), caveVinesHeadProvider)
),
Direction.DOWN,
BlockPredicate.ONLY_IN_AIR_PREDICATE,
true
)
);
FeatureUtils.register(
context,
CAVE_VINE_IN_MOSS,
Feature.BLOCK_COLUMN,
new BlockColumnConfiguration(
List.of(
BlockColumnConfiguration.layer(
new WeightedListInt(WeightedList.<IntProvider>builder().add(UniformInt.of(0, 3), 5).add(UniformInt.of(1, 7), 1).build()),
caveVinesBodyProvider
),
BlockColumnConfiguration.layer(ConstantInt.of(1), caveVinesHeadProvider)
),
Direction.DOWN,
BlockPredicate.ONLY_IN_AIR_PREDICATE,
true
)
);
FeatureUtils.register(
context,
MOSS_VEGETATION,
Feature.SIMPLE_BLOCK,
new SimpleBlockConfiguration(
new WeightedStateProvider(
WeightedList.<BlockState>builder()
.add(Blocks.FLOWERING_AZALEA.defaultBlockState(), 4)
.add(Blocks.AZALEA.defaultBlockState(), 7)
.add(Blocks.MOSS_CARPET.defaultBlockState(), 25)
.add(Blocks.SHORT_GRASS.defaultBlockState(), 50)
.add(Blocks.TALL_GRASS.defaultBlockState(), 10)
)
)
);
FeatureUtils.register(
context,
MOSS_PATCH,
Feature.VEGETATION_PATCH,
new VegetationPatchConfiguration(
BlockTags.MOSS_REPLACEABLE,
BlockStateProvider.simple(Blocks.MOSS_BLOCK),
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(MOSS_VEGETATION)),
CaveSurface.FLOOR,
ConstantInt.of(1),
0.0F,
5,
0.8F,
UniformInt.of(4, 7),
0.3F
)
);
FeatureUtils.register(
context,
MOSS_PATCH_BONEMEAL,
Feature.VEGETATION_PATCH,
new VegetationPatchConfiguration(
BlockTags.MOSS_REPLACEABLE,
BlockStateProvider.simple(Blocks.MOSS_BLOCK),
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(MOSS_VEGETATION)),
CaveSurface.FLOOR,
ConstantInt.of(1),
0.0F,
5,
0.6F,
UniformInt.of(1, 2),
0.75F
)
);
FeatureUtils.register(
context,
DRIPLEAF,
Feature.SIMPLE_RANDOM_SELECTOR,
new SimpleRandomFeatureConfiguration(
HolderSet.direct(
makeSmallDripleaf(),
makeDripleaf(Direction.EAST),
makeDripleaf(Direction.WEST),
makeDripleaf(Direction.SOUTH),
makeDripleaf(Direction.NORTH)
)
)
);
FeatureUtils.register(
context,
CLAY_WITH_DRIPLEAVES,
Feature.VEGETATION_PATCH,
new VegetationPatchConfiguration(
BlockTags.LUSH_GROUND_REPLACEABLE,
BlockStateProvider.simple(Blocks.CLAY),
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(DRIPLEAF)),
CaveSurface.FLOOR,
ConstantInt.of(3),
0.8F,
2,
0.05F,
UniformInt.of(4, 7),
0.7F
)
);
FeatureUtils.register(
context,
CLAY_POOL_WITH_DRIPLEAVES,
Feature.WATERLOGGED_VEGETATION_PATCH,
new VegetationPatchConfiguration(
BlockTags.LUSH_GROUND_REPLACEABLE,
BlockStateProvider.simple(Blocks.CLAY),
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(DRIPLEAF)),
CaveSurface.FLOOR,
ConstantInt.of(3),
0.8F,
5,
0.1F,
UniformInt.of(4, 7),
0.7F
)
);
FeatureUtils.register(
context,
LUSH_CAVES_CLAY,
Feature.RANDOM_BOOLEAN_SELECTOR,
new RandomBooleanFeatureConfiguration(
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(CLAY_WITH_DRIPLEAVES)),
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(CLAY_POOL_WITH_DRIPLEAVES))
)
);
FeatureUtils.register(
context,
MOSS_PATCH_CEILING,
Feature.VEGETATION_PATCH,
new VegetationPatchConfiguration(
BlockTags.MOSS_REPLACEABLE,
BlockStateProvider.simple(Blocks.MOSS_BLOCK),
PlacementUtils.inlinePlaced(configuredFeatures.getOrThrow(CAVE_VINE_IN_MOSS)),
CaveSurface.CEILING,
UniformInt.of(1, 2),
0.0F,
5,
0.08F,
UniformInt.of(4, 7),
0.3F
)
);
FeatureUtils.register(context, SPORE_BLOSSOM, Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(BlockStateProvider.simple(Blocks.SPORE_BLOSSOM)));
FeatureUtils.register(
context,
AMETHYST_GEODE,
Feature.GEODE,
new GeodeConfiguration(
new GeodeBlockSettings(
BlockStateProvider.simple(Blocks.AIR),
BlockStateProvider.simple(Blocks.AMETHYST_BLOCK),
BlockStateProvider.simple(Blocks.BUDDING_AMETHYST),
BlockStateProvider.simple(Blocks.CALCITE),
BlockStateProvider.simple(Blocks.SMOOTH_BASALT),
List.of(
Blocks.SMALL_AMETHYST_BUD.defaultBlockState(),
Blocks.MEDIUM_AMETHYST_BUD.defaultBlockState(),
Blocks.LARGE_AMETHYST_BUD.defaultBlockState(),
Blocks.AMETHYST_CLUSTER.defaultBlockState()
),
BlockTags.FEATURES_CANNOT_REPLACE,
BlockTags.GEODE_INVALID_BLOCKS
),
new GeodeLayerSettings(1.7, 2.2, 3.2, 4.2),
new GeodeCrackSettings(0.95, 2.0, 2),
0.35,
0.083,
true,
UniformInt.of(4, 6),
UniformInt.of(3, 4),
UniformInt.of(1, 2),
-16,
16,
0.05,
1
)
);
FeatureUtils.register(context, SCULK_PATCH_DEEP_DARK, Feature.SCULK_PATCH, new SculkPatchConfiguration(10, 32, 64, 0, 1, ConstantInt.of(0), 0.5F));
FeatureUtils.register(context, SCULK_PATCH_ANCIENT_CITY, Feature.SCULK_PATCH, new SculkPatchConfiguration(10, 32, 64, 0, 1, UniformInt.of(1, 3), 0.5F));
MultifaceSpreadeableBlock sculkVeinBlock = (MultifaceSpreadeableBlock)Blocks.SCULK_VEIN;
FeatureUtils.register(
context,
SCULK_VEIN,
Feature.MULTIFACE_GROWTH,
new MultifaceGrowthConfiguration(
sculkVeinBlock,
20,
true,
true,
true,
1.0F,
HolderSet.direct(
Block::builtInRegistryHolder,
Blocks.STONE,
Blocks.ANDESITE,
Blocks.DIORITE,
Blocks.GRANITE,
Blocks.DRIPSTONE_BLOCK,
Blocks.CALCITE,
Blocks.TUFF,
Blocks.DEEPSLATE
)
)
);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
HolderSet.direct()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
FeatureUtils.createKey(), FeatureUtils.register()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
PlacementUtils.inlinePlaced()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ClampedNormalFloat.of()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ConstantInt.of()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
UniformFloat.of()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
UniformInt.of()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
WeightedListInt()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GeodeBlockSettings()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GeodeCrackSettings()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GeodeLayerSettings()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BlockPredicate.allOf(), BlockPredicate.anyOf(), BlockPredicate.matchesTag(), BlockPredicate.solid()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
FossilFeatureConfiguration()
- 引用位置:
-
- 引用位置:
方法调用/构造调用 - 关联成员:
BlockColumnConfiguration(), BlockColumnConfiguration.layer()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
DripstoneClusterConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
GeodeConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
LargeDripstoneConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
MultifaceGrowthConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
PointedDripstoneConfiguration()
- 引用位置:
-
RandomBooleanFeatureConfiguration
- 引用位置:
构造调用 - 关联成员:
RandomBooleanFeatureConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
RootSystemConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
SculkPatchConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
SimpleBlockConfiguration()
- 引用位置:
-
SimpleRandomFeatureConfiguration
- 引用位置:
构造调用 - 关联成员:
SimpleRandomFeatureConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
UnderwaterMagmaConfiguration()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
VegetationPatchConfiguration()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
BlockStateProvider.simple()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
RandomizedIntStateProvider()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
WeightedStateProvider()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
EnvironmentScanPlacement.scanningFor()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RandomOffsetPlacement.vertical()
- 引用位置: