package de.tobiyas.racesandclasses.configuration.statusimun;
import java.io.File;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import de.tobiyas.racesandclasses.RacesAndClasses;
import de.tobiyas.util.config.YAMLConfigExtended;
public class StatusImunManager {
/**
* The map of name -> Status imun.
*/
public final Map<String,StatusImunContainer> containerMap = new HashMap<>();
/**
* Reload the Manager.
*/
public void reload(){
containerMap.clear();
File file = new File(RacesAndClasses.getPlugin().getDataFolder(), "StatusImun.yml");
if(!file.exists()) try{ file.createNewFile(); }catch(Throwable exp){}
YAMLConfigExtended config = new YAMLConfigExtended(file).load();
for(String name : config.getRootChildren()){
List<String> imun = config.getStringList(name);
if(imun == null || imun.isEmpty()) continue;
Collection<StatusEffect> effects = new HashSet<>();
for(String imunString : imun) {
StatusEffect ef = StatusEffect.resolve(imunString);
if(ef != null) effects.add(ef);
}
containerMap.put(name, new StatusImunContainer(name, effects));
}
}
/**
* If the Name is imun against the Status effect.
* @param name to use.
* @param effect to use.
* @return true if is imun.
*/
public boolean isImun(String name, StatusEffect effect){
if(name == null || name.isEmpty() || effect == null) return false;
StatusImunContainer container = containerMap.get(name);
return container == null ? false : container.isImun(effect);
}
}