|
@@ -38,6 +38,7 @@ import net.minecraft.world.level.levelgen.surfacebuilders.ConfiguredSurfaceBuild
|
|
|
import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder;
|
|
|
import net.minecraftforge.common.world.MobSpawnInfoBuilder;
|
|
|
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;
|
|
@@ -53,22 +54,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) {
|
|
@@ -435,11 +439,30 @@ public class BiomeModificationsImpl {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @SubscribeEvent
|
|
|
- public static void onBiomeLoading(BiomeLoadingEvent event) {
|
|
|
+ @SubscribeEvent(priority = EventPriority.HIGH)
|
|
|
+ public static void processAdditions(BiomeLoadingEvent event) {
|
|
|
+ modifyBiome(event, ADDITIONS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @SubscribeEvent(priority = EventPriority.NORMAL)
|
|
|
+ public static void processRemovals(BiomeLoadingEvent event) {
|
|
|
+ modifyBiome(event, REMOVALS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @SubscribeEvent(priority = EventPriority.LOW)
|
|
|
+ public static void processReplacements(BiomeLoadingEvent event) {
|
|
|
+ modifyBiome(event, REPLACEMENTS);
|
|
|
+ }
|
|
|
+
|
|
|
+ @SubscribeEvent(priority = EventPriority.LOWEST)
|
|
|
+ public static void postProcessBiomes(BiomeLoadingEvent event) {
|
|
|
+ modifyBiome(event, POST_PROCESSING);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void modifyBiome(BiomeLoadingEvent event, List<Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>>> list) {
|
|
|
BiomeContext biomeContext = wrapSelectionContext(event);
|
|
|
BiomeProperties.Mutable mutableBiome = new MutableBiomeWrapped(event);
|
|
|
- for (Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>> pair : MODIFICATIONS) {
|
|
|
+ for (Pair<Predicate<BiomeContext>, BiConsumer<BiomeContext, BiomeProperties.Mutable>> pair : list) {
|
|
|
if (pair.getLeft().test(biomeContext)) {
|
|
|
pair.getRight().accept(biomeContext, mutableBiome);
|
|
|
}
|