MinecraftConsoles/Minecraft.Server.FourKit/Block/Biome.cs
2026-04-13 19:43:48 -05:00

110 lines
3.5 KiB
C#

namespace Minecraft.Server.FourKit.Block;
public enum Biome
{
OCEAN = 0,
PLAINS = 1,
DESERT = 2,
EXTREME_HILLS = 3,
FOREST = 4,
TAIGA = 5,
SWAMPLAND = 6,
RIVER = 7,
HELL = 8,
SKY = 9,
FROZEN_OCEAN = 10,
FROZEN_RIVER = 11,
ICE_PLAINS = 12,
ICE_MOUNTAINS = 13,
MUSHROOM_ISLAND = 14,
MUSHROOM_SHORE = 15,
BEACH = 16,
DESERT_HILLS = 17,
FOREST_HILLS = 18,
TAIGA_HILLS = 19,
SMALL_MOUNTAINS = 20,
JUNGLE = 21,
JUNGLE_HILLS = 22,
}
// more for internal
// eliminates unnecessary overhead
internal static class BiomeHelper
{
private static readonly double[] _temperatures = new double[23];
private static readonly double[] _rainfalls = new double[23];
static BiomeHelper()
{
_temperatures[(int)Biome.OCEAN] = 0.5;
_temperatures[(int)Biome.PLAINS] = 0.8;
_temperatures[(int)Biome.DESERT] = 2.0;
_temperatures[(int)Biome.EXTREME_HILLS] = 0.2;
_temperatures[(int)Biome.FOREST] = 0.7;
_temperatures[(int)Biome.TAIGA] = 0.05;
_temperatures[(int)Biome.SWAMPLAND] = 0.8;
_temperatures[(int)Biome.RIVER] = 0.5;
_temperatures[(int)Biome.HELL] = 2.0;
_temperatures[(int)Biome.SKY] = 0.5;
_temperatures[(int)Biome.FROZEN_OCEAN] = 0.0;
_temperatures[(int)Biome.FROZEN_RIVER] = 0.0;
_temperatures[(int)Biome.ICE_PLAINS] = 0.0;
_temperatures[(int)Biome.ICE_MOUNTAINS] = 0.0;
_temperatures[(int)Biome.MUSHROOM_ISLAND] = 0.9;
_temperatures[(int)Biome.MUSHROOM_SHORE] = 0.9;
_temperatures[(int)Biome.BEACH] = 0.8;
_temperatures[(int)Biome.DESERT_HILLS] = 2.0;
_temperatures[(int)Biome.FOREST_HILLS] = 0.7;
_temperatures[(int)Biome.TAIGA_HILLS] = 0.05;
_temperatures[(int)Biome.SMALL_MOUNTAINS] = 0.2;
_temperatures[(int)Biome.JUNGLE] = 1.2;
_temperatures[(int)Biome.JUNGLE_HILLS] = 1.2;
_rainfalls[(int)Biome.OCEAN] = 0.5;
_rainfalls[(int)Biome.PLAINS] = 0.4;
_rainfalls[(int)Biome.DESERT] = 0.0;
_rainfalls[(int)Biome.EXTREME_HILLS] = 0.3;
_rainfalls[(int)Biome.FOREST] = 0.8;
_rainfalls[(int)Biome.TAIGA] = 0.8;
_rainfalls[(int)Biome.SWAMPLAND] = 0.9;
_rainfalls[(int)Biome.RIVER] = 0.5;
_rainfalls[(int)Biome.HELL] = 0.0;
_rainfalls[(int)Biome.SKY] = 0.5;
_rainfalls[(int)Biome.FROZEN_OCEAN] = 0.5;
_rainfalls[(int)Biome.FROZEN_RIVER] = 0.5;
_rainfalls[(int)Biome.ICE_PLAINS] = 0.5;
_rainfalls[(int)Biome.ICE_MOUNTAINS] = 0.5;
_rainfalls[(int)Biome.MUSHROOM_ISLAND] = 1.0;
_rainfalls[(int)Biome.MUSHROOM_SHORE] = 1.0;
_rainfalls[(int)Biome.BEACH] = 0.4;
_rainfalls[(int)Biome.DESERT_HILLS] = 0.0;
_rainfalls[(int)Biome.FOREST_HILLS] = 0.8;
_rainfalls[(int)Biome.TAIGA_HILLS] = 0.8;
_rainfalls[(int)Biome.SMALL_MOUNTAINS] = 0.3;
_rainfalls[(int)Biome.JUNGLE] = 0.9;
_rainfalls[(int)Biome.JUNGLE_HILLS] = 0.9;
}
public static double getTemperature(this Biome biome)
{
int id = (int)biome;
if (id >= 0 && id < _temperatures.Length) return _temperatures[id];
return 0.5;
}
public static double getRainfall(this Biome biome)
{
int id = (int)biome;
if (id >= 0 && id < _rainfalls.Length) return _rainfalls[id];
return 0.5;
}
public static Biome fromId(int id)
{
if (Enum.IsDefined(typeof(Biome), id)) return (Biome)id;
return Biome.PLAINS;
}
}