diff --git a/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java b/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java index db534e40..1f127d98 100644 --- a/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java +++ b/forge/src/main/java/dev/architectury/registry/level/biome/forge/BiomeModificationsImpl.java @@ -34,6 +34,7 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder; import net.minecraftforge.common.world.MobSpawnSettingsBuilder; import net.minecraftforge.event.world.BiomeLoadingEvent; +import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import org.apache.commons.lang3.tuple.Pair; @@ -48,22 +49,25 @@ import java.util.function.Supplier; @Mod.EventBusSubscriber(modid = ArchitecturyForge.MOD_ID) public class BiomeModificationsImpl { - private static final List, BiConsumer>> MODIFICATIONS = Lists.newArrayList(); + private static final List, BiConsumer>> ADDITIONS = Lists.newArrayList(); + private static final List, BiConsumer>> POST_PROCESSING = Lists.newArrayList(); + private static final List, BiConsumer>> REMOVALS = Lists.newArrayList(); + private static final List, BiConsumer>> REPLACEMENTS = Lists.newArrayList(); public static void addProperties(Predicate predicate, BiConsumer modifier) { - MODIFICATIONS.add(Pair.of(predicate, modifier)); + ADDITIONS.add(Pair.of(predicate, modifier)); } public static void postProcessProperties(Predicate predicate, BiConsumer modifier) { - MODIFICATIONS.add(Pair.of(predicate, modifier)); + POST_PROCESSING.add(Pair.of(predicate, modifier)); } public static void removeProperties(Predicate predicate, BiConsumer modifier) { - MODIFICATIONS.add(Pair.of(predicate, modifier)); + REMOVALS.add(Pair.of(predicate, modifier)); } public static void replaceProperties(Predicate predicate, BiConsumer modifier) { - MODIFICATIONS.add(Pair.of(predicate, modifier)); + REPLACEMENTS.add(Pair.of(predicate, modifier)); } private static BiomeContext wrapSelectionContext(BiomeLoadingEvent event) { @@ -367,11 +371,30 @@ public class BiomeModificationsImpl { } } - @SubscribeEvent - public static void onBiomeLoading(BiomeLoadingEvent event) { + @SubscribeEvent(priority = EventPriority.HIGH) + public static void applyAdditions(BiomeLoadingEvent event) { + modifyForPhase(event, ADDITIONS); + } + + @SubscribeEvent(priority = EventPriority.NORMAL) + public static void applyRemovals(BiomeLoadingEvent event) { + modifyForPhase(event, REMOVALS); + } + + @SubscribeEvent(priority = EventPriority.LOW) + public static void applyReplacements(BiomeLoadingEvent event) { + modifyForPhase(event, REPLACEMENTS); + } + + @SubscribeEvent(priority = EventPriority.LOWEST) + public static void applyPostProcessing(BiomeLoadingEvent event) { + modifyForPhase(event, POST_PROCESSING); + } + + private static void modifyForPhase(BiomeLoadingEvent event, List, BiConsumer>> phase) { BiomeContext biomeContext = wrapSelectionContext(event); BiomeProperties.Mutable mutableBiome = new MutableBiomeWrapped(event); - for (Pair, BiConsumer> pair : MODIFICATIONS) { + for (var pair : phase) { if (pair.getLeft().test(biomeContext)) { pair.getRight().accept(biomeContext, mutableBiome); } diff --git a/gradle.properties b/gradle.properties index b4d945cc..5657b2c4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ cf_type=release archives_base_name=architectury archives_base_name_snapshot=architectury-snapshot -base_version=3.5 +base_version=3.6 maven_group=dev.architectury fabric_loader_version=0.12.12