57 lines
1.7 KiB
Java
57 lines
1.7 KiB
Java
|
package io.gitlab.jfronny.libjf.config.impl;
|
||
|
|
||
|
import com.google.common.collect.ImmutableMap;
|
||
|
import io.gitlab.jfronny.libjf.LibJf;
|
||
|
import io.gitlab.jfronny.libjf.config.api.ConfigHolder;
|
||
|
import io.gitlab.jfronny.libjf.config.api.ConfigInstance;
|
||
|
import org.jetbrains.annotations.ApiStatus;
|
||
|
|
||
|
import java.nio.file.Path;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Map;
|
||
|
|
||
|
public class ConfigHolderImpl implements ConfigHolder {
|
||
|
@ApiStatus.Internal
|
||
|
public static final ConfigHolderImpl INSTANCE = new ConfigHolderImpl();
|
||
|
private ConfigHolderImpl() {
|
||
|
}
|
||
|
public static final String MODULE_ID = "libjf:config";
|
||
|
public static final String CUSTOM_ID = MODULE_ID + "_custom";
|
||
|
private final Map<String, ConfigInstance> configs = new HashMap<>();
|
||
|
private final Map<Path, ConfigInstance> configsByPath = new HashMap<>();
|
||
|
|
||
|
@Override
|
||
|
public void register(String modId, ConfigInstance config) {
|
||
|
if (isRegistered(modId)) {
|
||
|
LibJf.LOGGER.warn("Overriding config class of " + modId + " to " + config);
|
||
|
}
|
||
|
configs.put(modId, config);
|
||
|
config.getFilePath().ifPresent(path -> configsByPath.put(path, config));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public Map<String, ConfigInstance> getRegistered() {
|
||
|
return ImmutableMap.copyOf(configs);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public ConfigInstance get(String configClass) {
|
||
|
return configs.get(configClass);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public ConfigInstance get(Path configPath) {
|
||
|
return configsByPath.get(configPath);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isRegistered(String modId) {
|
||
|
return configs.containsKey(modId);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isRegistered(Path configPath) {
|
||
|
return configsByPath.containsKey(configPath);
|
||
|
}
|
||
|
}
|