Biome Builder structure features

This commit is contained in:
paulevsGitch 2021-12-02 12:45:35 +03:00
parent 1c3696fd02
commit 97473004a8
2 changed files with 58 additions and 6 deletions

View file

@ -1,5 +1,6 @@
package ru.bclib.world.structures;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.structure.v1.FabricStructureBuilder;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.resources.ResourceLocation;
@ -8,6 +9,7 @@ import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import java.util.List;
import java.util.Random;
public class BCLStructureFeature {
@ -15,13 +17,17 @@ public class BCLStructureFeature {
private final StructureFeature<NoneFeatureConfiguration> structure;
private final ConfiguredStructureFeature<?, ?> featureConfigured;
private final GenerationStep.Decoration featureStep;
private final List<ResourceLocation> biomes = Lists.newArrayList();
private final ResourceLocation id;
public BCLStructureFeature(ResourceLocation id, StructureFeature<NoneFeatureConfiguration> structure, GenerationStep.Decoration step, int spacing, int separation) {
this.id = id;
this.featureStep = step;
this.structure = FabricStructureBuilder.create(id, structure)
.step(step)
.defaultConfig(spacing, separation, RANDOM.nextInt(8192))
.register();
this.structure = FabricStructureBuilder
.create(id, structure)
.step(step)
.defaultConfig(spacing, separation, RANDOM.nextInt(8192))
.register();
this.featureConfigured = this.structure.configured(NoneFeatureConfiguration.NONE);
BuiltinRegistries.register(BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE, id, this.featureConfigured);
//TODO: 1.18 check if structures are added correctly
@ -39,4 +45,29 @@ public class BCLStructureFeature {
public GenerationStep.Decoration getFeatureStep() {
return featureStep;
}
/**
* Get the structure ID;
* @return {@link ResourceLocation} id.
*/
public ResourceLocation getID() {
return id;
}
/**
* Adds biome into internal biome list, used in {@link ru.bclib.api.biomes.BCLBiomeBuilder}.
* @param biome {@link ResourceLocation} biome ID.
*/
public void addInternalBiome(ResourceLocation biome) {
biomes.add(biome);
}
/**
* Get biome list where this structure feature can generate. Only represents biomes made with {@link ru.bclib.api.biomes.BCLBiomeBuilder} and only
* if structure was added during building process. Modification of this list will not affect structure generation.
* @return {@link List} of biome {@link ResourceLocation}.
*/
public List<ResourceLocation> getBiomes() {
return biomes;
}
}