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 configs = new HashMap<>(); @Override public void onPreLaunch() { registerConfig(MOD_ID, ExampleConfig.class); for (EntrypointContainer 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 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; } }