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 470d6c069..b6df5a68b 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
@@ -282,7 +282,14 @@ public class BiomeModificationContextImpl implements BiomeModificationContext {
 				featureSteps.add(RegistryEntryList.of(Collections.emptyList()));
 			}
 
-			featureSteps.set(index, plus(featureSteps.get(index), getEntry(features, entry)));
+			RegistryEntry.Reference<PlacedFeature> feature = getEntry(features, entry);
+
+			// Don't add the feature if it's already present
+			if (featureSteps.get(index).contains(feature)) {
+				return;
+			}
+
+			featureSteps.set(index, plus(featureSteps.get(index), feature));
 
 			// Ensure the list of flower features is up-to-date
 			rebuildFeatures = true;