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

@@ -14,6 +14,10 @@ dependencies {
include 'me.hypherionmc.night-config:toml:3.6.5_custom'
include 'me.hypherionmc.night-config:core:3.6.5_custom'
implementation project(":Common")
modApi("com.terraformersmc:modmenu:${mod_menu_version}") {
exclude(group: "net.fabricmc.fabric-api")
}
}
loom {

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": [