package jas.common.global;
import jas.common.helper.FileUtilities;
import jas.common.helper.GsonHelper;
import jas.spawner.modern.DefaultProps;
import jas.spawner.modern.spawner.biome.group.BiomeHelper;
import java.io.File;
import java.util.TreeMap;
import net.minecraft.world.biome.BiomeGenBase;
import com.google.gson.Gson;
public class BiomeBlacklist {
public final String FILE_VERSION = "1.0";
private boolean[] blacklist;
public BiomeBlacklist(File configDirectory) {
Gson gson = GsonHelper.createGson(true, new java.lang.reflect.Type[] { BiomeBlacklistSaveObject.class },
new Object[] { new BiomeBlacklistSaveObject.BlacklistSerializer() });
File blackListFile = new File(configDirectory, DefaultProps.GLOBALSETTINGSDIR + "BiomeBlacklist.cfg");
/* Read Blacklist */
{
BiomeBlacklistSaveObject optBlackList = GsonHelper.readOrCreateFromGson(
FileUtilities.createReader(blackListFile, false), BiomeBlacklistSaveObject.class, gson);
/* Create Numeric Blacklist */
TreeMap<String, Boolean> namedBlacklist = optBlackList.getBlacklist();
blacklist = new boolean[BiomeGenBase.getBiomeGenArray().length];
for (int biomeID = 0; biomeID < blacklist.length; biomeID++) {
BiomeGenBase biome = BiomeGenBase.getBiomeGenArray()[biomeID];
if (biome == null) {
blacklist[biomeID] = false;
continue;
}
Boolean isBlacklisted = namedBlacklist.get(BiomeHelper.getPackageName(biome));
blacklist[biomeID] = isBlacklisted != null ? isBlacklisted : false;
}
}
{
/* Write Blacklist */
BiomeBlacklistSaveObject saveObject = new BiomeBlacklistSaveObject(blacklist);
GsonHelper.writeToGson(FileUtilities.createWriter(blackListFile, true), saveObject, gson);
}
}
public boolean isBlacklisted(BiomeGenBase biome) {
if (biome == null || biome.biomeID < 0 || biome.biomeID >= blacklist.length) {
return false;
}
return blacklist[biome.biomeID];
}
}