diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2022-01-06 15:53:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-06 08:53:10 +0100 |
commit | 8690a845534cb40802878193d5e469128d57a31d (patch) | |
tree | fcaef19c1ee384d5b3f27dc060c64cffab7a9432 /src/main/java/gregtech/client | |
parent | 2721dd99417a48db7c96ee87adc4bc5e63e15947 (diff) | |
download | GT5-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.java | 44 | ||||
-rw-r--r-- | src/main/java/gregtech/client/GT_GuiFactory.java | 29 |
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; + } +} |