package cofh.lib.world.biome; import java.util.Collection; import java.util.Random; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenBase.TempCategory; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeDictionary.Type; public class BiomeInfo { private final Object data; private final boolean whitelist; private final int type; private final int hash; public BiomeInfo(String name) { data = name; hash = name.hashCode(); whitelist = true; type = 0; } public BiomeInfo(Object d, int t, boolean wl) { data = d; hash = 0; whitelist = wl; type = t; } @SuppressWarnings("unchecked") public boolean isBiomeEqual(BiomeGenBase biome, Random rand) { if (biome != null) switch (type) { default:break; case 0: String name = biome.biomeName; return name.hashCode() == hash && name.equals(data); case 1: return biome.getTempCategory() == data == whitelist; case 2: return BiomeDictionary.isBiomeOfType(biome, (Type)data) == whitelist; case 4: return ((Collection<String>)data).contains(biome.biomeName); case 5: return ((Collection<TempCategory>)data).contains(biome.getTempCategory()) == whitelist; case 6: Type[] d = (Type[])data; int c = 0, e = d.length; for (int i = 0; i < e; ++i) if (BiomeDictionary.isBiomeOfType(biome, d[i])) ++c; return c == e == whitelist; } return !whitelist; } }