[config] Add method to create a config screen

This commit is contained in:
Johannes Frohnmeyer 2022-03-25 18:34:43 +01:00
parent 9df0e04508
commit 6498d7635e
Signed by: Johannes
GPG Key ID: E76429612C2929F4
4 changed files with 11 additions and 3 deletions

View File

@ -1,6 +1,7 @@
package io.gitlab.jfronny.libjf.config.api;
import io.gitlab.jfronny.libjf.config.impl.ConfigHolderImpl;
import net.minecraft.client.gui.screen.Screen;
import java.nio.file.Path;
import java.util.Map;
@ -17,4 +18,5 @@ public interface ConfigHolder {
boolean isRegistered(Class<?> configClass);
boolean isRegistered(String modId);
boolean isRegistered(Path configPath);
Screen getConfigScreen(ConfigInstance config, Screen parent);
}

View File

@ -4,6 +4,8 @@ import com.google.common.collect.ImmutableMap;
import io.gitlab.jfronny.libjf.LibJf;
import io.gitlab.jfronny.libjf.config.api.ConfigHolder;
import io.gitlab.jfronny.libjf.config.api.ConfigInstance;
import io.gitlab.jfronny.libjf.config.impl.client.screen.TinyConfigScreen;
import net.minecraft.client.gui.screen.Screen;
import org.jetbrains.annotations.ApiStatus;
import java.nio.file.Path;
@ -77,4 +79,9 @@ public class ConfigHolderImpl implements ConfigHolder {
public boolean isRegistered(Path configPath) {
return configsByPath.containsKey(configPath);
}
@Override
public Screen getConfigScreen(ConfigInstance config, Screen parent) {
return new TinyConfigScreen(config, parent);
}
}

View File

@ -4,7 +4,6 @@ import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import io.gitlab.jfronny.libjf.config.api.ConfigHolder;
import io.gitlab.jfronny.libjf.config.api.ConfigInstance;
import io.gitlab.jfronny.libjf.config.impl.client.screen.TinyConfigScreen;
import io.gitlab.jfronny.libjf.LibJf;
import java.util.HashMap;
@ -22,6 +21,6 @@ public class ModMenu implements ModMenuApi {
}
private static ConfigScreenFactory<?> buildFactory(ConfigInstance config) {
return s -> new TinyConfigScreen(s, config);
return s -> ConfigHolder.getInstance().getConfigScreen(config, s);
}
}

View File

@ -25,7 +25,7 @@ import java.util.function.Predicate;
@Environment(EnvType.CLIENT)
public class TinyConfigScreen extends Screen {
public TinyConfigScreen(Screen parent, ConfigInstance config) {
public TinyConfigScreen(ConfigInstance config, Screen parent) {
super(new TranslatableText(config.getModId() + ".jfconfig." + "title"));
this.parent = parent;
this.config = config;