Biome feature modification fixes
This commit is contained in:
parent
eaba9bf698
commit
8234a1c9dc
1 changed files with 7 additions and 9 deletions
|
@ -32,6 +32,7 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import ru.bclib.config.Configs;
|
import ru.bclib.config.Configs;
|
||||||
import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor;
|
import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor;
|
||||||
|
import ru.bclib.util.CollectionsUtil;
|
||||||
import ru.bclib.util.MHelper;
|
import ru.bclib.util.MHelper;
|
||||||
import ru.bclib.world.biomes.BCLBiome;
|
import ru.bclib.world.biomes.BCLBiome;
|
||||||
import ru.bclib.world.biomes.FabricBiomesData;
|
import ru.bclib.world.biomes.FabricBiomesData;
|
||||||
|
@ -450,9 +451,13 @@ public class BiomeAPI {
|
||||||
*/
|
*/
|
||||||
public static void addBiomeFeature(Biome biome, PlacedFeature feature, Decoration step) {
|
public static void addBiomeFeature(Biome biome, PlacedFeature feature, Decoration step) {
|
||||||
BiomeGenerationSettingsAccessor accessor = (BiomeGenerationSettingsAccessor) biome.getGenerationSettings();
|
BiomeGenerationSettingsAccessor accessor = (BiomeGenerationSettingsAccessor) biome.getGenerationSettings();
|
||||||
List<List<Supplier<PlacedFeature>>> allFeatures = getMutable(accessor.bclib_getFeatures());
|
List<List<Supplier<PlacedFeature>>> allFeatures = CollectionsUtil.getMutable(accessor.bclib_getFeatures());
|
||||||
|
Set<PlacedFeature> set = CollectionsUtil.getMutable(accessor.bclib_getFeatureSet());
|
||||||
List<Supplier<PlacedFeature>> features = getFeaturesList(allFeatures, step);
|
List<Supplier<PlacedFeature>> features = getFeaturesList(allFeatures, step);
|
||||||
features.add(() -> feature);
|
features.add(() -> feature);
|
||||||
|
set.add(feature);
|
||||||
|
accessor.bclib_setFeatures(allFeatures);
|
||||||
|
accessor.bclib_setFeatureSet(set);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -559,19 +564,12 @@ public class BiomeAPI {
|
||||||
biome.setGenChance(chance).setFogDensity(fog);
|
biome.setGenChance(chance).setFogDensity(fog);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <O extends Object> List<O> getMutable(List<O> list) {
|
|
||||||
if (list instanceof ArrayList) {
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
return new ArrayList<>(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<Supplier<PlacedFeature>> getFeaturesList(List<List<Supplier<PlacedFeature>>> features, Decoration step) {
|
private static List<Supplier<PlacedFeature>> getFeaturesList(List<List<Supplier<PlacedFeature>>> features, Decoration step) {
|
||||||
int index = step.ordinal();
|
int index = step.ordinal();
|
||||||
while (features.size() <= index) {
|
while (features.size() <= index) {
|
||||||
features.add(Lists.newArrayList());
|
features.add(Lists.newArrayList());
|
||||||
}
|
}
|
||||||
List<Supplier<PlacedFeature>> mutable = getMutable(features.get(index));
|
List<Supplier<PlacedFeature>> mutable = CollectionsUtil.getMutable(features.get(index));
|
||||||
features.set(index, mutable);
|
features.set(index, mutable);
|
||||||
return mutable;
|
return mutable;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue