aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/client
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-01-06 15:53:10 +0800
committerGitHub <noreply@github.com>2022-01-06 08:53:10 +0100
commit8690a845534cb40802878193d5e469128d57a31d (patch)
treefcaef19c1ee384d5b3f27dc060c64cffab7a9432 /src/main/java/gregtech/client
parent2721dd99417a48db7c96ee87adc4bc5e63e15947 (diff)
downloadGT5-Unofficial-8690a845534cb40802878193d5e469128d57a31d.tar.gz
GT5-Unofficial-8690a845534cb40802878193d5e469128d57a31d.tar.bz2
GT5-Unofficial-8690a845534cb40802878193d5e469128d57a31d.zip
Add in game GUI to configure client preference (#852)
* Add in game GUI to configure client preference * Fix backslash
Diffstat (limited to 'src/main/java/gregtech/client')
-rw-r--r--src/main/java/gregtech/client/GT_GUI_ClientConfig.java44
-rw-r--r--src/main/java/gregtech/client/GT_GuiFactory.java29
2 files changed, 73 insertions, 0 deletions
diff --git a/src/main/java/gregtech/client/GT_GUI_ClientConfig.java b/src/main/java/gregtech/client/GT_GUI_ClientConfig.java
new file mode 100644
index 0000000000..436be7d1df
--- /dev/null
+++ b/src/main/java/gregtech/client/GT_GUI_ClientConfig.java
@@ -0,0 +1,44 @@
+package gregtech.client;
+
+import cpw.mods.fml.client.config.GuiConfig;
+import cpw.mods.fml.client.config.IConfigElement;
+import gregtech.api.GregTech_API;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraftforge.common.config.ConfigCategory;
+import net.minecraftforge.common.config.ConfigElement;
+import net.minecraftforge.common.config.Configuration;
+import net.minecraftforge.common.config.Property;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class GT_GUI_ClientConfig extends GuiConfig {
+ public GT_GUI_ClientConfig(GuiScreen parentScreen) {
+ super(parentScreen, getConfigElements(), "gregtech", "client", false, false, getAbridgedConfigPath(GregTech_API.sClientDataFile.mConfig.toString()));
+ }
+
+ @SuppressWarnings("rawtypes")
+ private static List<IConfigElement> getConfigElements() {
+ final Configuration config = GregTech_API.sClientDataFile.mConfig;
+ setLanguageKeys(config);
+ return config.getCategoryNames().stream()
+ .filter(name -> name.indexOf('.') == -1)
+ .map(name -> new ConfigElement(config.getCategory(name)))
+ .collect(Collectors.toList());
+ }
+
+ private static void setLanguageKeys(Configuration config) {
+ for (String categoryName : config.getCategoryNames()) {
+ ConfigCategory category = config.getCategory(categoryName);
+ category.setLanguageKey("GT5U.config." + categoryName);
+ for (Map.Entry<String, Property> entry : category.entrySet()) {
+ // drop the default value in name
+ String name = entry.getKey();
+ int defaultStart = name.lastIndexOf('_');
+ String realName = defaultStart >= 0 ? name.substring(0, defaultStart) : name;
+ entry.getValue().setLanguageKey(String.format("%s.%s", category.getLanguagekey(), realName));
+ }
+ }
+ }
+}
diff --git a/src/main/java/gregtech/client/GT_GuiFactory.java b/src/main/java/gregtech/client/GT_GuiFactory.java
new file mode 100644
index 0000000000..6bc489e297
--- /dev/null
+++ b/src/main/java/gregtech/client/GT_GuiFactory.java
@@ -0,0 +1,29 @@
+package gregtech.client;
+
+import cpw.mods.fml.client.IModGuiFactory;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+
+import java.util.Set;
+
+public class GT_GuiFactory implements IModGuiFactory {
+ @Override
+ public void initialize(Minecraft minecraftInstance) {
+
+ }
+
+ @Override
+ public Class<? extends GuiScreen> mainConfigGuiClass() {
+ return GT_GUI_ClientConfig.class;
+ }
+
+ @Override
+ public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
+ return null;
+ }
+
+ @Override
+ public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
+ return null;
+ }
+}