package jas.common.global;
import jas.spawner.modern.spawner.biome.group.BiomeHelper;
import java.lang.reflect.Type;
import java.util.Map.Entry;
import java.util.TreeMap;
import net.minecraft.world.biome.BiomeGenBase;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
public class BiomeBlacklistSaveObject {
private TreeMap<String, Boolean> namedBlacklist;
public TreeMap<String, Boolean> getBlacklist() {
return namedBlacklist;
}
/** For Serialization */
private BiomeBlacklistSaveObject() {
namedBlacklist = new TreeMap<String, Boolean>();
}
public BiomeBlacklistSaveObject(boolean[] rawBlacklist) {
namedBlacklist = new TreeMap<String, Boolean>();
for (int biomeID = 0; biomeID < rawBlacklist.length; biomeID++) {
BiomeGenBase biome = BiomeGenBase.getBiomeGenArray()[biomeID];
if (biome == null) {
continue;
}
namedBlacklist.put(BiomeHelper.getPackageName(biome), rawBlacklist[biomeID]);
}
}
public static class BlacklistSerializer implements JsonSerializer<BiomeBlacklistSaveObject>,
JsonDeserializer<BiomeBlacklistSaveObject> {
private final String FILE_VERSION = "1.0";
private final String FILE_VERSION_KEY = "FILE_VERSION";
private final String BLACKLIST_KEY = "BLACKLIST";
@Override
public JsonElement serialize(BiomeBlacklistSaveObject src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject endObject = new JsonObject();
endObject.addProperty(FILE_VERSION_KEY, FILE_VERSION);
JsonObject blacklistObj = new JsonObject();
for (Entry<String, Boolean> entry : src.namedBlacklist.entrySet()) {
blacklistObj.addProperty(entry.getKey(), entry.getValue());
}
endObject.add(BLACKLIST_KEY, blacklistObj);
return endObject;
}
@Override
public BiomeBlacklistSaveObject deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
BiomeBlacklistSaveObject saveObject = new BiomeBlacklistSaveObject();
JsonObject object = json.getAsJsonObject();
String fileVersion = object.get(FILE_VERSION_KEY).getAsString();
JsonObject blacklist = object.get(BLACKLIST_KEY).getAsJsonObject();
for (Entry<String, JsonElement> entry : blacklist.entrySet()) {
String biomeName = entry.getKey();
Boolean isBlacklisted = entry.getValue().getAsBoolean();
saveObject.namedBlacklist.put(biomeName, isBlacklisted != null ? isBlacklisted : false);
}
return saveObject;
}
}
}