Feature lists
This commit is contained in:
parent
2191733f37
commit
178bf6d270
1 changed files with 42 additions and 11 deletions
|
@ -1,6 +1,7 @@
|
||||||
package ru.bclib.api.biomes;
|
package ru.bclib.api.biomes;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -34,6 +35,7 @@ import net.minecraft.world.level.levelgen.SurfaceRules;
|
||||||
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
|
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import ru.bclib.util.ColorUtil;
|
import ru.bclib.util.ColorUtil;
|
||||||
import ru.bclib.world.biomes.BCLBiome;
|
import ru.bclib.world.biomes.BCLBiome;
|
||||||
import ru.bclib.world.features.BCLFeature;
|
import ru.bclib.world.features.BCLFeature;
|
||||||
|
@ -44,6 +46,8 @@ public class BCLBiomeBuilder {
|
||||||
private static final SurfaceRules.ConditionSource SURFACE_NOISE = SurfaceRules.noiseCondition(Noises.SOUL_SAND_LAYER, -0.012);
|
private static final SurfaceRules.ConditionSource SURFACE_NOISE = SurfaceRules.noiseCondition(Noises.SOUL_SAND_LAYER, -0.012);
|
||||||
|
|
||||||
private List<ConfiguredStructureFeature> structures = new ArrayList<>(16);
|
private List<ConfiguredStructureFeature> structures = new ArrayList<>(16);
|
||||||
|
private List<FeatureInfo> features = new ArrayList<>(32);
|
||||||
|
|
||||||
private BiomeGenerationSettings.Builder generationSettings;
|
private BiomeGenerationSettings.Builder generationSettings;
|
||||||
private BiomeSpecialEffects.Builder effectsBuilder;
|
private BiomeSpecialEffects.Builder effectsBuilder;
|
||||||
private MobSpawnSettings.Builder spawnSettings;
|
private MobSpawnSettings.Builder spawnSettings;
|
||||||
|
@ -69,6 +73,7 @@ public class BCLBiomeBuilder {
|
||||||
INSTANCE.effectsBuilder = null;
|
INSTANCE.effectsBuilder = null;
|
||||||
INSTANCE.spawnSettings = null;
|
INSTANCE.spawnSettings = null;
|
||||||
INSTANCE.structures.clear();
|
INSTANCE.structures.clear();
|
||||||
|
INSTANCE.features.clear();
|
||||||
INSTANCE.temperature = 1.0F;
|
INSTANCE.temperature = 1.0F;
|
||||||
INSTANCE.fogDensity = 1.0F;
|
INSTANCE.fogDensity = 1.0F;
|
||||||
INSTANCE.downfall = 1.0F;
|
INSTANCE.downfall = 1.0F;
|
||||||
|
@ -428,7 +433,8 @@ public class BCLBiomeBuilder {
|
||||||
* @return same {@link BCLBiomeBuilder} instance.
|
* @return same {@link BCLBiomeBuilder} instance.
|
||||||
*/
|
*/
|
||||||
public BCLBiomeBuilder feature(Decoration decoration, PlacedFeature feature) {
|
public BCLBiomeBuilder feature(Decoration decoration, PlacedFeature feature) {
|
||||||
getGeneration().addFeature(decoration, feature);
|
//getGeneration().addFeature(decoration, feature);
|
||||||
|
features.add(new FeatureInfo(feature, decoration));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,6 +442,7 @@ public class BCLBiomeBuilder {
|
||||||
* Adds vanilla Mushrooms.
|
* Adds vanilla Mushrooms.
|
||||||
* @return same {@link BCLBiomeBuilder} instance.
|
* @return same {@link BCLBiomeBuilder} instance.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public BCLBiomeBuilder defaultMushrooms() {
|
public BCLBiomeBuilder defaultMushrooms() {
|
||||||
return feature(BiomeDefaultFeatures::addDefaultMushrooms);
|
return feature(BiomeDefaultFeatures::addDefaultMushrooms);
|
||||||
}
|
}
|
||||||
|
@ -444,6 +451,7 @@ public class BCLBiomeBuilder {
|
||||||
* Adds vanilla Nether Ores.
|
* Adds vanilla Nether Ores.
|
||||||
* @return same {@link BCLBiomeBuilder} instance.
|
* @return same {@link BCLBiomeBuilder} instance.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public BCLBiomeBuilder netherDefaultOres() {
|
public BCLBiomeBuilder netherDefaultOres() {
|
||||||
return feature(BiomeDefaultFeatures::addNetherDefaultOres);
|
return feature(BiomeDefaultFeatures::addNetherDefaultOres);
|
||||||
}
|
}
|
||||||
|
@ -453,6 +461,7 @@ public class BCLBiomeBuilder {
|
||||||
* @param featureAdd {@link Consumer} with {@link BiomeGenerationSettings.Builder}.
|
* @param featureAdd {@link Consumer} with {@link BiomeGenerationSettings.Builder}.
|
||||||
* @return same {@link BCLBiomeBuilder} instance.
|
* @return same {@link BCLBiomeBuilder} instance.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public BCLBiomeBuilder feature(Consumer<BiomeGenerationSettings.Builder> featureAdd) {
|
public BCLBiomeBuilder feature(Consumer<BiomeGenerationSettings.Builder> featureAdd) {
|
||||||
featureAdd.accept(getGeneration());
|
featureAdd.accept(getGeneration());
|
||||||
return this;
|
return this;
|
||||||
|
@ -524,15 +533,17 @@ public class BCLBiomeBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
public BCLBiomeBuilder chancedSurface(SurfaceRules.RuleSource surfaceBlockA, SurfaceRules.RuleSource surfaceBlockB, SurfaceRules.RuleSource underBlock){
|
public BCLBiomeBuilder chancedSurface(SurfaceRules.RuleSource surfaceBlockA, SurfaceRules.RuleSource surfaceBlockB, SurfaceRules.RuleSource underBlock){
|
||||||
return surface(SurfaceRules.sequence(
|
return surface(
|
||||||
SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR,
|
SurfaceRules.sequence(
|
||||||
SurfaceRules.sequence(
|
SurfaceRules.ifTrue(SurfaceRules.ON_FLOOR,
|
||||||
SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.1818, 0.1818), surfaceBlockA),
|
SurfaceRules.sequence(
|
||||||
surfaceBlockB
|
SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.1818, 0.1818), surfaceBlockA),
|
||||||
)
|
surfaceBlockB
|
||||||
),
|
)
|
||||||
underBlock
|
),
|
||||||
));
|
underBlock
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -559,13 +570,18 @@ public class BCLBiomeBuilder {
|
||||||
* @return created {@link BCLBiome} instance.
|
* @return created {@link BCLBiome} instance.
|
||||||
*/
|
*/
|
||||||
public <T extends BCLBiome> T build(BiFunction<ResourceLocation, Biome, T> biomeConstructor) {
|
public <T extends BCLBiome> T build(BiFunction<ResourceLocation, Biome, T> biomeConstructor) {
|
||||||
|
if (!features.isEmpty()) {
|
||||||
|
Collections.sort(features);
|
||||||
|
features.forEach(info -> getGeneration().addFeature(info.step, info.feature));
|
||||||
|
}
|
||||||
|
|
||||||
BiomeBuilder builder = new BiomeBuilder()
|
BiomeBuilder builder = new BiomeBuilder()
|
||||||
.precipitation(precipitation)
|
.precipitation(precipitation)
|
||||||
.biomeCategory(category)
|
.biomeCategory(category)
|
||||||
.temperature(temperature)
|
.temperature(temperature)
|
||||||
.downfall(downfall);
|
.downfall(downfall);
|
||||||
|
|
||||||
if (getSpawns() != null) {
|
if (spawnSettings != null) {
|
||||||
builder.mobSpawnSettings(spawnSettings.build());
|
builder.mobSpawnSettings(spawnSettings.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,4 +637,19 @@ public class BCLBiomeBuilder {
|
||||||
}
|
}
|
||||||
return generationSettings;
|
return generationSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class FeatureInfo implements Comparable<FeatureInfo> {
|
||||||
|
final PlacedFeature feature;
|
||||||
|
final Decoration step;
|
||||||
|
|
||||||
|
FeatureInfo(PlacedFeature feature, Decoration step) {
|
||||||
|
this.feature = feature;
|
||||||
|
this.step = step;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(FeatureInfo info) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue