2021-04-11 16:00:37 +02:00
|
|
|
package io.gitlab.jfronny.libjf.config;
|
|
|
|
|
|
|
|
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
|
|
|
import com.terraformersmc.modmenu.api.ModMenuApi;
|
|
|
|
import io.gitlab.jfronny.libjf.Libjf;
|
2021-04-11 20:23:52 +02:00
|
|
|
import me.shedaniel.clothconfiglite.api.ConfigScreen;
|
|
|
|
import net.minecraft.text.TranslatableText;
|
2021-04-11 16:00:37 +02:00
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
public class ModMenu implements ModMenuApi {
|
|
|
|
@Override
|
|
|
|
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
|
|
|
|
Map<String, ConfigScreenFactory<?>> factories = new HashMap<>();
|
|
|
|
for (Map.Entry<String, Config> entry : Libjf.getConfigs().entrySet()) {
|
|
|
|
if (!Libjf.MOD_ID.equals(entry.getKey()))
|
2021-04-11 20:23:52 +02:00
|
|
|
factories.put(entry.getKey(), buildFactory(entry.getValue()));
|
2021-04-11 16:00:37 +02:00
|
|
|
}
|
|
|
|
return factories;
|
|
|
|
}
|
|
|
|
|
2021-04-11 20:23:52 +02:00
|
|
|
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();
|
|
|
|
};
|
2021-04-11 16:00:37 +02:00
|
|
|
}
|
|
|
|
}
|