LibJF/src/main/java/io/gitlab/jfronny/libjf/Libjf.java

53 lines
2.0 KiB
Java

package io.gitlab.jfronny.libjf;
import com.google.common.collect.ImmutableMap;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.gitlab.jfronny.libjf.config.Config;
import io.gitlab.jfronny.libjf.config.JfConfig;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Map;
public class Libjf implements PreLaunchEntrypoint {
public static final String MOD_ID = "libjf";
public static final Logger LOGGER = LogManager.getLogger(MOD_ID);
public static final Gson GSON = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.TRANSIENT)
.excludeFieldsWithModifiers(Modifier.PRIVATE)
.setPrettyPrinting()
.create();
private static final Map<String, Config> configs = new HashMap<>();
@Override
public void onPreLaunch() {
registerConfig(MOD_ID, ExampleConfig.class);
for (EntrypointContainer<JfConfig> entrypointContainer : FabricLoader.getInstance().getEntrypointContainers(MOD_ID + ":config", JfConfig.class)) {
String id = entrypointContainer.getProvider().getMetadata().getId();
Libjf.registerConfig(id, entrypointContainer.getEntrypoint().getClass());
Libjf.LOGGER.info("Registering config for " + id);
}
}
public static void registerConfig(String modId, Class<?> config) {
if (!isRegistered(config))
configs.put(modId, new Config(modId, config));
}
public static Map<String, Config> getConfigs() {
return ImmutableMap.copyOf(configs);
}
public static boolean isRegistered(Class<?> config) {
for (Config value : configs.values()) {
if (value.configClass.equals(config))
return true;
}
return false;
}
}