Biome Builder structure features
This commit is contained in:
parent
1c3696fd02
commit
97473004a8
2 changed files with 58 additions and 6 deletions
|
@ -1,6 +1,9 @@
|
|||
package ru.bclib.api.biomes;
|
||||
|
||||
import net.fabricmc.fabric.api.biome.v1.BiomeModifications;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
import net.minecraft.data.BuiltinRegistries;
|
||||
import net.minecraft.data.worldgen.BiomeDefaultFeatures;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.Music;
|
||||
|
@ -20,6 +23,7 @@ import net.minecraft.world.level.biome.BiomeSpecialEffects;
|
|||
import net.minecraft.world.level.biome.MobSpawnSettings;
|
||||
import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
||||
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import ru.bclib.util.ColorUtil;
|
||||
import ru.bclib.world.biomes.BCLBiome;
|
||||
|
@ -441,11 +445,28 @@ public class BCLBiomeBuilder {
|
|||
return feature(feature.getDecoration(), feature.getPlacedFeature());
|
||||
}
|
||||
|
||||
// TODO Make feature registration
|
||||
public BCLBiomeBuilder structure(BCLStructureFeature structure) {
|
||||
/**
|
||||
* Adds new structure feature into thr biome.
|
||||
* @param structure {@link ConfiguredStructureFeature} to add.
|
||||
* @return same {@link BCLBiomeBuilder} instance.
|
||||
*/
|
||||
public BCLBiomeBuilder structure(ConfiguredStructureFeature<?, ?> structure) {
|
||||
BuiltinRegistries.CONFIGURED_STRUCTURE_FEATURE
|
||||
.getResourceKey(structure)
|
||||
.ifPresent(key -> BiomeModifications.addStructure(ctx -> ctx.getBiomeKey().location().equals(biomeID), key));
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds new structure feature into thr biome. Will add building biome into the structure list.
|
||||
* @param structure {@link BCLStructureFeature} to add.
|
||||
* @return same {@link BCLBiomeBuilder} instance.
|
||||
*/
|
||||
public BCLBiomeBuilder structure(BCLStructureFeature structure) {
|
||||
structure.addInternalBiome(biomeID);
|
||||
return structure(structure.getFeatureConfigured());
|
||||
}
|
||||
|
||||
/**
|
||||
* Finalize biome creation.
|
||||
* @return created {@link BCLBiome} instance.
|
||||
|
|
|
@ -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,10 +17,14 @@ 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)
|
||||
this.structure = FabricStructureBuilder
|
||||
.create(id, structure)
|
||||
.step(step)
|
||||
.defaultConfig(spacing, separation, RANDOM.nextInt(8192))
|
||||
.register();
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue