// Path: src/com/mcf/davidee/msc/BiomeNameHelper.java
// public class BiomeNameHelper {
// 	
// 	public static final int MAX_REG_ID = 39;
// 	public static final List<Integer> VANILLA_MUT = Arrays.asList(129, 130, 131, 132, 133, 134, 140, 149, 151, 155, 156, 157, 158, 160, 162, 163, 164, 165, 166, 167);
// 	
// 	
// 
// 	private static Map<String, BiomeGenBase> biomeMap;
// 	private static Set<BiomeGenBase> biomeSet;
// 	
// 	private final static Map<String, String> nameSimplificationMap = new HashMap<String, String>();
// 	
// 	static {
// 		nameSimplificationMap.put("biomesoplenty.biomes", "BOP");
// 		nameSimplificationMap.put("extrabiomes.module.summa.biome", "EBXL");
// 		nameSimplificationMap.put("twilightforest.biomes", "TF");
// 		nameSimplificationMap.put("bwg4.biomes", "BWG4");
// 		nameSimplificationMap.put("highlands.biome", "HL");
// 		nameSimplificationMap.put("net.tropicraft.world.biomes", "TROP");
// 		nameSimplificationMap.put("xolova.blued00r.divinerpg.generation", "DRPG");
// 	}
// 	
// 	//TODO This better - recognize vanilla biomes some other way
// 	public static boolean isVanilla(BiomeGenBase biome) {
// 		return biome.biomeID <= MAX_REG_ID || VANILLA_MUT.contains(biome.biomeID);
// 	}
// 	
// 	
// 	public static String getBiomeName(BiomeGenBase biome) {
// 		String name = ((isVanilla(biome)) ? "Vanilla" : biome.getClass().getName()) + '.' + biome.biomeName;
// 		for (Entry<String,String> entry : nameSimplificationMap.entrySet())
// 			if (name.startsWith(entry.getKey()))
// 				return entry.getValue() + '.' + biome.biomeName;
// 		return name;
// 	}
// 
// 	public static BiomeGenBase getBiome(String biomeName) {
// 		return biomeMap.get(biomeName);
// 	}
// 
// 	public static void initBiomeMap() {
// 		if (biomeMap != null)
// 			return;
// 		
// 		biomeMap = new HashMap<String, BiomeGenBase>();
// 		biomeSet = new HashSet<BiomeGenBase>();
// 
// 		for (BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) {
// 			if (biome != null) {
// 				biomeMap.put(getBiomeName(biome), biome);
// 				biomeSet.add(biome);
// 			}
// 		}
// 	}
// 
// 	public static Set<BiomeGenBase> getAllBiomes() {
// 		return biomeSet;
// 	}
// 
// 	public static Set<String> getAllBiomeNames() {
// 		return biomeMap.keySet();
// 	}
// }
// 
// Path: src/com/mcf/davidee/msc/Utils.java
// public class Utils {
// 	
// 	public static int parseIntWithMinMax(String s, int min, int max) throws NumberFormatException {
// 		int i = Integer.parseInt(s);
// 		if (i < min)
// 			return min;
// 		if (i > max)
// 			return max;
// 		return i;
// 
// 	}
// 
// 	public static int parseIntDMinMax(String s, int _default, int min, int max) {
// 		try {
// 			return parseIntWithMinMax(s, min, max);
// 		} catch (NumberFormatException e) {
// 			return _default;
// 		}
// 	}
// 
// 	public static <E> Set<E> asSet(E... arr) {
// 		Set<E> set = new HashSet<E>();
// 		for (E obj : arr)
// 			set.add(obj);
// 		return set;
// 	}
// 
// 	public static <E> List<E> asList(E... arr) {
// 		List<E> list = new ArrayList<E>();
// 		for (E obj : arr)
// 			list.add(obj);
// 		return list;
// 	}
// 
// 	public static <T> void copyInto(List<T> source, List<T> dest) {
// 		dest.clear();
// 		for (T obj : source)
// 			dest.add(obj);
// 	}
// 
// 	public static void writeLine(BufferedWriter writer, String line) throws IOException {
// 		writer.write(line);
// 		writer.newLine();
// 	}
// }


import java.util.Set;
import net.minecraft.world.biome.BiomeGenBase;
import com.mcf.davidee.msc.BiomeNameHelper;
import com.mcf.davidee.msc.Utils;
package com.mcf.davidee.msc.grouping;




public class BiomeOperand {

	public final BiomeOperator operator;

	private BiomeGroup group;
	private BiomeGenBase biome;
	private boolean isGroup, isAll;

	public BiomeOperand() {
		this.operator = BiomeOperator.ALL;
		isAll = true;
	}

	public BiomeOperand(BiomeOperator op, BiomeGroup group) {
		this.operator = op;
		this.group = group;
		isGroup = true;
	}

	public BiomeOperand(BiomeOperator op, BiomeGenBase biome) {
		this.operator = op;
		this.biome = biome;
	}

	public Set<BiomeGenBase> getBiomes() {
		if (isAll)
			return BiomeNameHelper.getAllBiomes();
		if (isGroup)
			return group.evaluate();
		else
			return Utils.asSet(biome);
	}

	public String toString() {
		if (isAll)
			return "*";
// Path: src/com/mcf/davidee/msc/BiomeNameHelper.java
// public class BiomeNameHelper {
// 	
// 	public static final int MAX_REG_ID = 39;
// 	public static final List<Integer> VANILLA_MUT = Arrays.asList(129, 130, 131, 132, 133, 134, 140, 149, 151, 155, 156, 157, 158, 160, 162, 163, 164, 165, 166, 167);
// 	
// 	
// 
// 	private static Map<String, BiomeGenBase> biomeMap;
// 	private static Set<BiomeGenBase> biomeSet;
// 	
// 	private final static Map<String, String> nameSimplificationMap = new HashMap<String, String>();
// 	
// 	static {
// 		nameSimplificationMap.put("biomesoplenty.biomes", "BOP");
// 		nameSimplificationMap.put("extrabiomes.module.summa.biome", "EBXL");
// 		nameSimplificationMap.put("twilightforest.biomes", "TF");
// 		nameSimplificationMap.put("bwg4.biomes", "BWG4");
// 		nameSimplificationMap.put("highlands.biome", "HL");
// 		nameSimplificationMap.put("net.tropicraft.world.biomes", "TROP");
// 		nameSimplificationMap.put("xolova.blued00r.divinerpg.generation", "DRPG");
// 	}
// 	
// 	//TODO This better - recognize vanilla biomes some other way
// 	public static boolean isVanilla(BiomeGenBase biome) {
// 		return biome.biomeID <= MAX_REG_ID || VANILLA_MUT.contains(biome.biomeID);
// 	}
// 	
// 	
// 	public static String getBiomeName(BiomeGenBase biome) {
// 		String name = ((isVanilla(biome)) ? "Vanilla" : biome.getClass().getName()) + '.' + biome.biomeName;
// 		for (Entry<String,String> entry : nameSimplificationMap.entrySet())
// 			if (name.startsWith(entry.getKey()))
// 				return entry.getValue() + '.' + biome.biomeName;
// 		return name;
// 	}
// 
// 	public static BiomeGenBase getBiome(String biomeName) {
// 		return biomeMap.get(biomeName);
// 	}
// 
// 	public static void initBiomeMap() {
// 		if (biomeMap != null)
// 			return;
// 		
// 		biomeMap = new HashMap<String, BiomeGenBase>();
// 		biomeSet = new HashSet<BiomeGenBase>();
// 
// 		for (BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) {
// 			if (biome != null) {
// 				biomeMap.put(getBiomeName(biome), biome);
// 				biomeSet.add(biome);
// 			}
// 		}
// 	}
// 
// 	public static Set<BiomeGenBase> getAllBiomes() {
// 		return biomeSet;
// 	}
// 
// 	public static Set<String> getAllBiomeNames() {
// 		return biomeMap.keySet();
// 	}
// }
// 
// Path: src/com/mcf/davidee/msc/Utils.java
// public class Utils {
// 	
// 	public static int parseIntWithMinMax(String s, int min, int max) throws NumberFormatException {
// 		int i = Integer.parseInt(s);
// 		if (i < min)
// 			return min;
// 		if (i > max)
// 			return max;
// 		return i;
// 
// 	}
// 
// 	public static int parseIntDMinMax(String s, int _default, int min, int max) {
// 		try {
// 			return parseIntWithMinMax(s, min, max);
// 		} catch (NumberFormatException e) {
// 			return _default;
// 		}
// 	}
// 
// 	public static <E> Set<E> asSet(E... arr) {
// 		Set<E> set = new HashSet<E>();
// 		for (E obj : arr)
// 			set.add(obj);
// 		return set;
// 	}
// 
// 	public static <E> List<E> asList(E... arr) {
// 		List<E> list = new ArrayList<E>();
// 		for (E obj : arr)
// 			list.add(obj);
// 		return list;
// 	}
// 
// 	public static <T> void copyInto(List<T> source, List<T> dest) {
// 		dest.clear();
// 		for (T obj : source)
// 			dest.add(obj);
// 	}
// 
// 	public static void writeLine(BufferedWriter writer, String line) throws IOException {
// 		writer.write(line);
// 		writer.newLine();
// 	}
// }


// Path: src/com/mcf/davidee/msc/grouping/BiomeOperand.java
import java.util.Set;
import net.minecraft.world.biome.BiomeGenBase;
import com.mcf.davidee.msc.BiomeNameHelper;
import com.mcf.davidee.msc.Utils;

package com.mcf.davidee.msc.grouping;




public class BiomeOperand {

	public final BiomeOperator operator;

	private BiomeGroup group;
	private BiomeGenBase biome;
	private boolean isGroup, isAll;

	public BiomeOperand() {
		this.operator = BiomeOperator.ALL;
		isAll = true;
	}

	public BiomeOperand(BiomeOperator op, BiomeGroup group) {
		this.operator = op;
		this.group = group;
		isGroup = true;
	}

	public BiomeOperand(BiomeOperator op, BiomeGenBase biome) {
		this.operator = op;
		this.biome = biome;
	}

	public Set<BiomeGenBase> getBiomes() {
		if (isAll)
			return BiomeNameHelper.getAllBiomes();
		if (isGroup)
			return group.evaluate();
		else
			return Utils.asSet(biome);
	}

	public String toString() {
		if (isAll)
			return "*";
		return operator.name + ((isGroup) ? group.getName() : BiomeNameHelper.getBiomeName(biome));