Feature sorting changes
This commit is contained in:
parent
f817981e91
commit
77cc26d548
2 changed files with 29 additions and 27 deletions
|
@ -29,8 +29,6 @@ import net.minecraft.world.level.levelgen.SurfaceRules;
|
|||
import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver;
|
||||
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor;
|
||||
import ru.bclib.util.CollectionsUtil;
|
||||
import ru.bclib.util.ColorUtil;
|
||||
import ru.bclib.world.biomes.BCLBiome;
|
||||
import ru.bclib.world.features.BCLFeature;
|
||||
|
@ -40,7 +38,6 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class BCLBiomeBuilder {
|
||||
private static final BCLBiomeBuilder INSTANCE = new BCLBiomeBuilder();
|
||||
|
@ -572,18 +569,7 @@ public class BCLBiomeBuilder {
|
|||
|
||||
builder.mobSpawnSettings(getSpawns().build());
|
||||
builder.specialEffects(getEffects().build());
|
||||
|
||||
BiomeGenerationSettings settings = getGeneration().build();
|
||||
BiomeGenerationSettingsAccessor accessor = BiomeGenerationSettingsAccessor.class.cast(settings);
|
||||
List<List<Supplier<PlacedFeature>>> featureLists = CollectionsUtil.getMutable(accessor.bclib_getFeatures());
|
||||
final int size = featureLists.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
List<Supplier<PlacedFeature>> list = CollectionsUtil.getMutable(featureLists.get(i));
|
||||
BiomeAPI.sortFeatures(list);
|
||||
featureLists.add(i, list);
|
||||
}
|
||||
accessor.bclib_setFeatures(featureLists);
|
||||
builder.generationSettings(settings);
|
||||
builder.generationSettings(getGeneration().build());
|
||||
|
||||
final T res = biomeConstructor.apply(biomeID, builder.build());
|
||||
res.attachStructures(structures);
|
||||
|
|
|
@ -24,6 +24,7 @@ import net.minecraft.world.entity.Mob;
|
|||
import net.minecraft.world.entity.MobCategory;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.biome.BiomeGenerationSettings;
|
||||
import net.minecraft.world.level.biome.BiomeSource;
|
||||
import net.minecraft.world.level.biome.Biomes;
|
||||
import net.minecraft.world.level.biome.Climate;
|
||||
|
@ -479,6 +480,7 @@ public class BiomeAPI {
|
|||
|
||||
List<BiConsumer<ResourceLocation, Biome>> modifications = MODIFICATIONS.get(level.dimension());
|
||||
if (modifications == null) {
|
||||
biomes.forEach(biome -> sortBiomeFeatures(biome));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -497,9 +499,23 @@ public class BiomeAPI {
|
|||
consumer.accept(biomeID, biome);
|
||||
});
|
||||
}
|
||||
sortBiomeFeatures(biome);
|
||||
});
|
||||
}
|
||||
|
||||
private static void sortBiomeFeatures(Biome biome) {
|
||||
BiomeGenerationSettings settings = biome.getGenerationSettings();
|
||||
BiomeGenerationSettingsAccessor accessor = BiomeGenerationSettingsAccessor.class.cast(settings);
|
||||
List<List<Supplier<PlacedFeature>>> featureList = CollectionsUtil.getMutable(accessor.bclib_getFeatures());
|
||||
final int size = featureList.size();
|
||||
for (int i = 0; i < size; i++) {
|
||||
List<Supplier<PlacedFeature>> features = CollectionsUtil.getMutable(featureList.get(i));
|
||||
sortFeatures(features);
|
||||
featureList.add(i, features);
|
||||
}
|
||||
accessor.bclib_setFeatures(featureList);
|
||||
}
|
||||
|
||||
private static List<SurfaceRules.RuleSource> getRuleSources(Set<Biome> biomes, ResourceKey<Level> dimensionType) {
|
||||
Set<ResourceLocation> biomeIDs = biomes.stream().map(biome -> getBiomeID(biome)).collect(Collectors.toSet());
|
||||
List<SurfaceRules.RuleSource> rules = Lists.newArrayList();
|
||||
|
@ -615,17 +631,6 @@ public class BiomeAPI {
|
|||
});
|
||||
}
|
||||
|
||||
private static void changeStructureStarts(Consumer<Map<StructureFeature<?>, Multimap<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>>> modifier) {
|
||||
Registry<NoiseGeneratorSettings> chunkGenSettingsRegistry = BuiltinRegistries.NOISE_GENERATOR_SETTINGS;
|
||||
|
||||
for (Map.Entry<ResourceKey<NoiseGeneratorSettings>, NoiseGeneratorSettings> entry : chunkGenSettingsRegistry.entrySet()) {
|
||||
Map<StructureFeature<?>, Multimap<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>> structureMap = getMutableStructureConfig(entry.getValue());
|
||||
|
||||
modifier.accept(structureMap);
|
||||
setMutableStructureConfig(entry.getValue(), structureMap);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds new structure feature to existing biome.
|
||||
* @param biomeKey {@link ResourceKey} for the {@link Biome} to add structure feature in.
|
||||
|
@ -714,7 +719,18 @@ public class BiomeAPI {
|
|||
return Blocks.AIR.defaultBlockState();
|
||||
}
|
||||
|
||||
public static void sortFeatures(List<Supplier<PlacedFeature>> features) {
|
||||
private static void changeStructureStarts(Consumer<Map<StructureFeature<?>, Multimap<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>>> modifier) {
|
||||
Registry<NoiseGeneratorSettings> chunkGenSettingsRegistry = BuiltinRegistries.NOISE_GENERATOR_SETTINGS;
|
||||
|
||||
for (Map.Entry<ResourceKey<NoiseGeneratorSettings>, NoiseGeneratorSettings> entry : chunkGenSettingsRegistry.entrySet()) {
|
||||
Map<StructureFeature<?>, Multimap<ConfiguredStructureFeature<?, ?>, ResourceKey<Biome>>> structureMap = getMutableStructureConfig(entry.getValue());
|
||||
|
||||
modifier.accept(structureMap);
|
||||
setMutableStructureConfig(entry.getValue(), structureMap);
|
||||
}
|
||||
}
|
||||
|
||||
private static void sortFeatures(List<Supplier<PlacedFeature>> features) {
|
||||
initFeatureOrder();
|
||||
features.forEach(provider -> {
|
||||
PlacedFeature feature = provider.get();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue