diff --git a/src/main/java/biomesoplenty/api/enums/BOPClimates.java b/src/main/java/biomesoplenty/api/enums/BOPClimates.java deleted file mode 100644 index 704c6073d..000000000 --- a/src/main/java/biomesoplenty/api/enums/BOPClimates.java +++ /dev/null @@ -1,208 +0,0 @@ -/******************************************************************************* - * Copyright 2021, the Glitchfiend Team. - * All rights reserved. - ******************************************************************************/ -package biomesoplenty.api.enums; - -import biomesoplenty.api.biome.BOPBiomes; -import biomesoplenty.common.util.biome.BiomeUtil; -import biomesoplenty.init.ModBiomes; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.biome.Biomes; -import net.minecraft.world.level.newbiome.context.Context; -import net.minecraftforge.common.BiomeManager; -import net.minecraftforge.common.BiomeManager.BiomeType; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Set; -import java.util.stream.Collectors; - -public enum BOPClimates -{ - ICE_CAP (BiomeType.ICY), - TUNDRA (BiomeType.ICY), - WET_BOREAL (BiomeType.COOL), - DRY_BOREAL (BiomeType.COOL), - WET_TEMPERATE (BiomeType.COOL), - DRY_TEMPERATE (BiomeType.WARM), - COOL_TEMPERATE (BiomeType.COOL), - WARM_TEMPERATE (BiomeType.WARM), - SUBTROPICAL (BiomeType.WARM), - TROPICAL (BiomeType.DESERT), - MEDITERRANEAN (BiomeType.WARM), - SAVANNA (BiomeType.DESERT), - HOT_DESERT (BiomeType.DESERT), - WASTELAND (null), - NETHER (null); - - public final BiomeType biomeType; - private int totalBiomesWeight; - private int totalIslandBiomesWeight; - - private ArrayList landBiomes = Lists.newArrayList(); - private ArrayList islandBiomes = Lists.newArrayList(); - - BOPClimates(BiomeType biomeType) - { - this.biomeType = biomeType; - } - - public BOPClimates addBiome(int weight, ResourceKey biome) - { - return this.addBiome(new WeightedBiomeEntry(weight, biome)); - } - - public BOPClimates addBiome(WeightedBiomeEntry biomeEntry) - { - this.totalBiomesWeight += biomeEntry.weight; - this.landBiomes.add(biomeEntry); - return this; - } - - public BOPClimates addIslandBiome(int weight, ResourceKey biome) - { - return this.addIslandBiome(new WeightedBiomeEntry(weight, biome)); - } - - public BOPClimates addIslandBiome(WeightedBiomeEntry biomeEntry) - { - this.totalIslandBiomesWeight += biomeEntry.weight; - this.islandBiomes.add(biomeEntry); - return this; - } - - public ResourceKey getRandomBiome(Context context, ResourceKey fallback) - { - if (this.totalBiomesWeight == 0) - return fallback; - - int weight = context.nextRandom(this.totalBiomesWeight); - Iterator iterator = this.landBiomes.iterator(); - WeightedBiomeEntry item; - do - { - item = iterator.next(); - weight -= item.weight; - } - while (weight >= 0); - return item.biome; - } - - public ResourceKey getRandomIslandBiome(Context context, ResourceKey fallback) - { - if (this.totalIslandBiomesWeight == 0) - return fallback; - - int weight = context.nextRandom(this.totalIslandBiomesWeight); - Iterator iterator = this.islandBiomes.iterator(); - WeightedBiomeEntry item; - do - { - item = iterator.next(); - weight -= item.weight; - } - while (weight >= 0); - return item.biome; - } - - public ResourceKey getRandomOceanBiome(Context context, boolean deep) - { - return (deep ? Biomes.DEEP_OCEAN : Biomes.OCEAN); - } - - public ImmutableList getLandBiomes() - { - return this.landBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.landBiomes); - } - - public ImmutableList getIslandBiomes() - { - return this.islandBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.islandBiomes); - } - - private WeightedBiomeEntry getDefaultWeightedBiomeEntry() - { - return new WeightedBiomeEntry(100, Biomes.OCEAN); - } - - private static BOPClimates[] values = BOPClimates.values(); - - public static BOPClimates lookup(int i) {return values[i];} - - // map temperature and rainfall to climates - // temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue - // we will contrive to make any combination equally likely, so the overall rarity of each climate is in proportion to the number of times it appears in the array - private static final BOPClimates[] climateMapping = new BOPClimates[] - { - TUNDRA, TUNDRA, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, TUNDRA, TUNDRA, - WET_BOREAL, WET_BOREAL, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, DRY_BOREAL, DRY_BOREAL, - WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, - WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, - WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, - SUBTROPICAL, SUBTROPICAL, WET_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, DRY_TEMPERATE, SAVANNA, SAVANNA, - SUBTROPICAL, SUBTROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, SAVANNA, SAVANNA, - TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT, - TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT - }; - - public static int[] getClimateMappingInts() - { - // 9 temperature values, 12 rainfall values, 12 * 9 = 108 - int[] out = new int[108]; - for (int i = 0; i < 108; i++) - { - out[i] = climateMapping[i].ordinal(); - } - return out; - } - - public static ImmutableSet> getOverworldBiomes() - { - Set> set = Sets.newHashSet(); - - for (BOPClimates climate : BOPClimates.values()) - { - if (climate == BOPClimates.NETHER) - { - continue; - } - - set.addAll(climate.getLandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet())); - set.addAll(climate.getIslandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet())); - } - - ModBiomes.subBiomes.values().forEach(weightedSubBiome -> set.add(weightedSubBiome.biome)); - return ImmutableSet.copyOf(set); - } - - public static class WeightedBiomeEntry - { - public final int weight; - public final ResourceKey biome; - - public WeightedBiomeEntry(int weight, ResourceKey biome) - { - this.weight = weight; - this.biome = biome; - } - } - - // for debugging purposes - public static void printWeights() - { - for (BOPClimates climate : BOPClimates.values()) - { - for (WeightedBiomeEntry entry : climate.landBiomes) - { - System.out.println(climate.name()+" "+entry.biome.location()+" "+entry.weight); - } - } - } - -}