Porting configured features.
This commit is contained in:
@ -2,43 +2,25 @@ package dev.micle.firefly_bush_backport.worldgen;
|
|||||||
|
|
||||||
import dev.micle.firefly_bush_backport.FireflyBushBackport;
|
import dev.micle.firefly_bush_backport.FireflyBushBackport;
|
||||||
import dev.micle.firefly_bush_backport.block.ModBlocks;
|
import dev.micle.firefly_bush_backport.block.ModBlocks;
|
||||||
import net.minecraft.core.registries.Registries;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.data.worldgen.BootstapContext;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.data.worldgen.placement.PlacementUtils;
|
import net.minecraft.util.registry.WorldGenRegistries;
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
import net.minecraft.world.gen.feature.BlockClusterFeatureConfig;
|
||||||
import net.minecraft.world.level.levelgen.feature.Feature;
|
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
|
import net.minecraft.world.gen.feature.Feature;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.RandomPatchConfiguration;
|
import net.minecraft.world.gen.feature.IFeatureConfig;
|
||||||
import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration;
|
|
||||||
import net.minecraft.world.level.levelgen.feature.stateproviders.SimpleStateProvider;
|
|
||||||
|
|
||||||
public class ModConfiguredFeatures {
|
public class ModConfiguredFeatures {
|
||||||
public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_FIREFLY_BUSH_KEY = registerKey("patch_firefly_bush");
|
public static final ConfiguredFeature<?, ?> PATCH_FIREFLY_BUSH_KEY = create("patch_firefly_bush", Feature.RANDOM_PATCH.configured(
|
||||||
|
new BlockClusterFeatureConfig.Builder(
|
||||||
|
new SimpleBlockStateProvider(ModBlocks.FIREFLY_BUSH.get().defaultBlockState()), new SimpleBlockPlacer()
|
||||||
|
).tries(20).xspread(4).zspread(4).yspread(3).build()
|
||||||
|
));
|
||||||
|
|
||||||
public static void bootstrap(BootstapContext<ConfiguredFeature<?, ?>> context) {
|
public static <FC extends IFeatureConfig, F extends Feature<FC>, CF extends ConfiguredFeature<FC, F>> CF create(String id, CF configuredFeature) {
|
||||||
register(context, PATCH_FIREFLY_BUSH_KEY, Feature.RANDOM_PATCH, new RandomPatchConfiguration(
|
Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, new ResourceLocation(FireflyBushBackport.MOD_ID, id), configuredFeature);
|
||||||
20,
|
return configuredFeature;
|
||||||
4,
|
|
||||||
3,
|
|
||||||
PlacementUtils.onlyWhenEmpty(
|
|
||||||
Feature.SIMPLE_BLOCK,
|
|
||||||
new SimpleBlockConfiguration(
|
|
||||||
SimpleStateProvider.simple(ModBlocks.FIREFLY_BUSH.get())
|
|
||||||
)
|
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ResourceKey<ConfiguredFeature<?, ?>> registerKey(String name) {
|
|
||||||
return ResourceKey.create(Registries.CONFIGURED_FEATURE, ResourceLocation.fromNamespaceAndPath(FireflyBushBackport.MOD_ID, name));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static <FC extends FeatureConfiguration, F extends Feature<FC>> void register(
|
|
||||||
BootstapContext<ConfiguredFeature<?, ?>> context,
|
|
||||||
ResourceKey<ConfiguredFeature<?, ?>> key, F feature, FC configuration
|
|
||||||
) {
|
|
||||||
context.register(key, new ConfiguredFeature<>(feature, configuration));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user