package io.gitlab.jfronny.libjf.config; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import io.gitlab.jfronny.libjf.Libjf; import me.shedaniel.clothconfiglite.api.ConfigScreen; import net.minecraft.text.TranslatableText; import java.util.HashMap; import java.util.Map; public class ModMenu implements ModMenuApi { @Override public Map> getProvidedConfigScreenFactories() { Map> factories = new HashMap<>(); for (Map.Entry entry : Libjf.getConfigs().entrySet()) { if (!Libjf.MOD_ID.equals(entry.getKey())) factories.put(entry.getKey(), buildFactory(entry.getValue())); } return factories; } private static ConfigScreenFactory buildFactory(Config config) { return s -> { ConfigScreen c = ConfigScreen.create(new TranslatableText(config.translationPrefix + "title"), s); for (EntryInfo entry : config.entries) { c.add(new TranslatableText(config.translationPrefix + entry.field.getName()), entry.value, () -> entry.defaultValue, v -> { entry.value = v; config.write(); }); } return c.get(); }; } }