mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 03:56:59 -05:00
BiomeModifications on Forge now uses Forge's builtin priority system (#188)
* BiomeModifications on Forge now uses Forge's builtin priority system Signed-off-by: Max <maxh2709@gmail.com> * Bump minor version Signed-off-by: Max <maxh2709@gmail.com>
This commit is contained in:
@@ -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<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> MODIFICATIONS = Lists.newArrayList();
|
||||
private static final List<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> ADDITIONS = Lists.newArrayList();
|
||||
private static final List<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> POST_PROCESSING = Lists.newArrayList();
|
||||
private static final List<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> REMOVALS = Lists.newArrayList();
|
||||
private static final List<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> REPLACEMENTS = Lists.newArrayList();
|
||||
|
||||
public static void addProperties(Predicate<BiomeContext> predicate, BiConsumer<BiomeContext, BiomeProperties.Mutable> modifier) {
|
||||
MODIFICATIONS.add(Pair.of(predicate, modifier));
|
||||
ADDITIONS.add(Pair.of(predicate, modifier));
|
||||
}
|
||||
|
||||
public static void postProcessProperties(Predicate<BiomeContext> predicate, BiConsumer<BiomeContext, BiomeProperties.Mutable> modifier) {
|
||||
MODIFICATIONS.add(Pair.of(predicate, modifier));
|
||||
POST_PROCESSING.add(Pair.of(predicate, modifier));
|
||||
}
|
||||
|
||||
public static void removeProperties(Predicate<BiomeContext> predicate, BiConsumer<BiomeContext, BiomeProperties.Mutable> modifier) {
|
||||
MODIFICATIONS.add(Pair.of(predicate, modifier));
|
||||
REMOVALS.add(Pair.of(predicate, modifier));
|
||||
}
|
||||
|
||||
public static void replaceProperties(Predicate<BiomeContext> predicate, BiConsumer<BiomeContext, BiomeProperties.Mutable> 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<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> phase) {
|
||||
BiomeContext biomeContext = wrapSelectionContext(event);
|
||||
BiomeProperties.Mutable mutableBiome = new MutableBiomeWrapped(event);
|
||||
for (Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>> pair : MODIFICATIONS) {
|
||||
for (var pair : phase) {
|
||||
if (pair.getLeft().test(biomeContext)) {
|
||||
pair.getRight().accept(biomeContext, mutableBiome);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user