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:
Max
2022-01-31 16:20:50 +01:00
committed by GitHub
parent 503226e60d
commit 38a2e56461
2 changed files with 32 additions and 9 deletions

View File

@@ -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);
}

View File

@@ -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