From af0cec4081986a291c62ef4a5b86c04207c8ede9 Mon Sep 17 00:00:00 2001 From: modmuss50 <modmuss50@gmail.com> Date: Sun, 31 Oct 2021 10:41:16 +0000 Subject: [PATCH] Add features to the allowed features set. Fixes features not spawning when added via the biome api. (#1796) --- .../biome/modification/BiomeModificationContextImpl.java | 5 +++++ .../biome/modification/GenerationSettingsAccessor.java | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationContextImpl.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationContextImpl.java index 6ae5f3bf3..c4ef6e450 100644 --- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationContextImpl.java +++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/impl/biome/modification/BiomeModificationContextImpl.java @@ -19,10 +19,12 @@ package net.fabricmc.fabric.impl.biome.modification; import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.function.BiPredicate; import java.util.function.Supplier; @@ -260,6 +262,7 @@ public class BiomeModificationContextImpl implements BiomeModificationContext { } accessor.fabric_setFeatures(features); + accessor.fabric_setAllowedFeatures(new HashSet<>(accessor.fabric_getAllowedFeatures())); } private void unfreezeFlowerFeatures() { @@ -293,6 +296,7 @@ public class BiomeModificationContextImpl implements BiomeModificationContext { } accessor.fabric_setFeatures(ImmutableList.copyOf(featureSteps)); + accessor.fabric_setAllowedFeatures(Set.copyOf(accessor.fabric_getAllowedFeatures())); } private void freezeFlowerFeatures() { @@ -334,6 +338,7 @@ public class BiomeModificationContextImpl implements BiomeModificationContext { } featureSteps.get(index).add(() -> configuredFeature); + accessor.fabric_getAllowedFeatures().add(configuredFeature); // Ensure the list of flower features is up to date rebuildFlowerFeatures(); diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/GenerationSettingsAccessor.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/GenerationSettingsAccessor.java index 5fb6d1989..9483bd1a7 100644 --- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/GenerationSettingsAccessor.java +++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/modification/GenerationSettingsAccessor.java @@ -18,6 +18,7 @@ package net.fabricmc.fabric.mixin.biome.modification; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Supplier; import org.spongepowered.asm.mixin.Mixin; @@ -37,6 +38,9 @@ public interface GenerationSettingsAccessor { @Accessor("features") List<List<Supplier<ConfiguredFeature<?, ?>>>> fabric_getFeatures(); + @Accessor("allowedFeatures") + Set<ConfiguredFeature<?, ?>> fabric_getAllowedFeatures(); + @Accessor("flowerFeatures") List<ConfiguredFeature<?, ?>> fabric_getFlowerFeatures(); @@ -48,6 +52,10 @@ public interface GenerationSettingsAccessor { @Mutable void fabric_setFeatures(List<List<Supplier<ConfiguredFeature<?, ?>>>> value); + @Accessor("allowedFeatures") + @Mutable + void fabric_setAllowedFeatures(Set<ConfiguredFeature<?, ?>> allowedFeatures); + @Accessor("flowerFeatures") @Mutable void fabric_setFlowerFeatures(List<ConfiguredFeature<?, ?>> value);