Implement Auto Config Screen registration (Forge/ModMenu)

This commit is contained in:
2022-08-06 23:36:19 +02:00
parent 34eca384e5
commit ff8301f7e2
11 changed files with 119 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
package me.hypherionmc.craterlib;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import me.hypherionmc.craterlib.client.gui.config.CraterConfigScreen;
import me.hypherionmc.craterlib.common.config.ConfigController;
import me.hypherionmc.craterlib.common.config.ModuleConfig;
import me.hypherionmc.craterlib.common.config.annotations.NoConfigScreen;
import java.util.HashMap;
import java.util.Map;
/**
* @author HypherionSA
* @date 06/08/2022
*/
public class CraterLibModMenuIntegration implements ModMenuApi {
@Override
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
Map<String, ConfigScreenFactory<?>> configScreens = new HashMap<>();
ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> {
if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) {
configScreens.put(((ModuleConfig) conf).getModId(), screen -> new CraterConfigScreen((ModuleConfig) conf, screen));
}
});
return configScreens;
}
}

View File

@@ -24,6 +24,9 @@
],
"client": [
"me.hypherionmc.craterlib.client.CraterLibClientInitializer"
],
"modmenu": [
"me.hypherionmc.craterlib.CraterLibModMenuIntegration"
]
},
"mixins": [