79 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.data.worldgen.features;
 | |
| 
 | |
| import java.util.List;
 | |
| import net.minecraft.core.Direction;
 | |
| import net.minecraft.core.Holder;
 | |
| import net.minecraft.core.registries.Registries;
 | |
| import net.minecraft.data.worldgen.BootstrapContext;
 | |
| import net.minecraft.data.worldgen.placement.PlacementUtils;
 | |
| import net.minecraft.resources.ResourceKey;
 | |
| import net.minecraft.resources.ResourceLocation;
 | |
| import net.minecraft.world.level.block.Block;
 | |
| import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
 | |
| import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
 | |
| import net.minecraft.world.level.levelgen.feature.Feature;
 | |
| import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
 | |
| import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
 | |
| import net.minecraft.world.level.levelgen.feature.configurations.RandomPatchConfiguration;
 | |
| import net.minecraft.world.level.levelgen.placement.PlacedFeature;
 | |
| 
 | |
| public class FeatureUtils {
 | |
| 	public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) {
 | |
| 		AquaticFeatures.bootstrap(context);
 | |
| 		CaveFeatures.bootstrap(context);
 | |
| 		EndFeatures.bootstrap(context);
 | |
| 		MiscOverworldFeatures.bootstrap(context);
 | |
| 		NetherFeatures.bootstrap(context);
 | |
| 		OreFeatures.bootstrap(context);
 | |
| 		PileFeatures.bootstrap(context);
 | |
| 		TreeFeatures.bootstrap(context);
 | |
| 		VegetationFeatures.bootstrap(context);
 | |
| 	}
 | |
| 
 | |
| 	private static BlockPredicate simplePatchPredicate(List<Block> blocks) {
 | |
| 		BlockPredicate blockPredicate;
 | |
| 		if (!blocks.isEmpty()) {
 | |
| 			blockPredicate = BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.matchesBlocks(Direction.DOWN.getUnitVec3i(), blocks));
 | |
| 		} else {
 | |
| 			blockPredicate = BlockPredicate.ONLY_IN_AIR_PREDICATE;
 | |
| 		}
 | |
| 
 | |
| 		return blockPredicate;
 | |
| 	}
 | |
| 
 | |
| 	public static RandomPatchConfiguration simpleRandomPatchConfiguration(int tries, Holder<PlacedFeature> feature) {
 | |
| 		return new RandomPatchConfiguration(tries, 7, 3, feature);
 | |
| 	}
 | |
| 
 | |
| 	public static <FC extends FeatureConfiguration, F extends Feature<FC>> RandomPatchConfiguration simplePatchConfiguration(
 | |
| 		F feature, FC config, List<Block> blocks, int tries
 | |
| 	) {
 | |
| 		return simpleRandomPatchConfiguration(tries, PlacementUtils.filtered(feature, config, simplePatchPredicate(blocks)));
 | |
| 	}
 | |
| 
 | |
| 	public static <FC extends FeatureConfiguration, F extends Feature<FC>> RandomPatchConfiguration simplePatchConfiguration(
 | |
| 		F feature, FC config, List<Block> blocks
 | |
| 	) {
 | |
| 		return simplePatchConfiguration(feature, config, blocks, 96);
 | |
| 	}
 | |
| 
 | |
| 	public static <FC extends FeatureConfiguration, F extends Feature<FC>> RandomPatchConfiguration simplePatchConfiguration(F feature, FC config) {
 | |
| 		return simplePatchConfiguration(feature, config, List.of(), 96);
 | |
| 	}
 | |
| 
 | |
| 	public static ResourceKey<ConfiguredFeature<?, ?>> createKey(String name) {
 | |
| 		return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.withDefaultNamespace(name));
 | |
| 	}
 | |
| 
 | |
| 	public static void register(
 | |
| 		BootstrapContext<ConfiguredFeature<?, ?>> context, ResourceKey<ConfiguredFeature<?, ?>> key, Feature<NoneFeatureConfiguration> feature
 | |
| 	) {
 | |
| 		register(context, key, feature, FeatureConfiguration.NONE);
 | |
| 	}
 | |
| 
 | |
| 	public static <FC extends FeatureConfiguration, F extends Feature<FC>> void register(
 | |
| 		BootstrapContext<ConfiguredFeature<?, ?>> context, ResourceKey<ConfiguredFeature<?, ?>> key, F feature, FC config
 | |
| 	) {
 | |
| 		context.register(key, new ConfiguredFeature(feature, config));
 | |
| 	}
 | |
| }
 |