package openmods.config;
import com.google.common.base.Preconditions;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import cpw.mods.fml.client.event.ConfigChangedEvent;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import java.util.Collection;
import net.minecraftforge.common.config.Configuration;
public class ConfigStorage {
public static final ConfigStorage instance = new ConfigStorage();
private Multimap<String, Configuration> configs = ArrayListMultimap.create();
public void register(Configuration value) {
ModContainer mod = Loader.instance().activeModContainer();
Preconditions.checkNotNull(mod, "Can't register outside initialization");
final String modId = mod.getModId();
configs.put(modId, value);
}
public Collection<Configuration> getConfigs(String modId) {
return configs.get(modId);
}
public void saveAll(String modId) {
for (Configuration config : configs.get(modId))
if (config.hasChanged()) config.save();
}
@SubscribeEvent
public void onConfigChange(ConfigChangedEvent.PostConfigChangedEvent evt) {
saveAll(evt.modID);
}
}