LibJF/libjf-config-v0/src/main/java/io/gitlab/jfronny/libjf/config/impl/entrypoint/JfConfigSafe.java

37 lines
1.6 KiB
Java

package io.gitlab.jfronny.libjf.config.impl.entrypoint;
import io.gitlab.jfronny.libjf.LibJf;
import io.gitlab.jfronny.libjf.config.api.ConfigHolder;
import io.gitlab.jfronny.libjf.config.api.JfConfig;
import io.gitlab.jfronny.libjf.config.impl.ConfigHolderImpl;
import io.gitlab.jfronny.libjf.unsafe.JfLanguageAdapter;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint;
import net.fabricmc.loader.impl.util.log.Log;
import net.minecraft.util.Language;
import java.util.function.Function;
public class JfConfigSafe implements PreLaunchEntrypoint {
public static Function<String, String> TRANSLATION_SUPPLIER = s -> null;
@Override
public void onPreLaunch() {
for (EntrypointContainer<JfConfig> config : FabricLoader.getInstance().getEntrypointContainers(ConfigHolderImpl.MODULE_ID, JfConfig.class)) {
registerIfMissing(config.getProvider().getMetadata().getId(), config.getEntrypoint().getClass());
}
TRANSLATION_SUPPLIER = s -> {
String translated = Language.getInstance().get(s);
return translated.equals(s) ? null : translated;
};
ConfigHolderImpl.GSON = LibJf.GSON;
}
public static void registerIfMissing(String modId, Class<?> klazz) {
if (!ConfigHolder.getInstance().isRegistered(modId)) {
Log.info(JfLanguageAdapter.LOG_CATEGORY, "Registering config for " + modId);
ConfigHolder.getInstance().register(modId, klazz);
}
}
}