aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/config/YACLConfigManager.java
blob: d91f3f620db018ed8d44699ed8b7b26f9ae25909 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package dev.isxander.yacl.config;

import java.util.HashMap;
import java.util.Map;

@SuppressWarnings("unchecked")
public class YACLConfigManager {
    private static final Map<Class<?>, ConfigInstance<?>> configs = new HashMap<>();

    public static <T> void register(ConfigInstance<T> configInstance) {
        configs.put(configInstance.getConfigClass(), configInstance);
        configInstance.load();
    }

    public static <T> T getConfigData(Class<T> configClass) {
        return ((ConfigInstance<T>) configs.get(configClass)).getConfig();
    }

    public static <T> ConfigInstance<T> getConfigInstance(Class<T> configClass) {
        return (ConfigInstance<T>) configs.get(configClass);
    }

    public static <T, I extends ConfigInstance<T>> I getConfigInstanceType(Class<T> configClass) {
        return (I) configs.get(configClass);
    }
}