Эх сурвалжийг харах

remove gui config sorting

TheIllusiveC4 6 жил өмнө
parent
commit
821adbd730

+ 2 - 1
src/main/java/c4/customfov/CustomFoV.java

@@ -15,7 +15,8 @@ import org.apache.logging.log4j.Level;
         dependencies = "required-after:forge@[14.23.4.2705,)",
         acceptedMinecraftVersions = "[1.12, 1.13)",
         certificateFingerprint = "@FINGERPRINT@",
-        clientSideOnly = true)
+        clientSideOnly = true,
+        guiFactory = "c4.customfov.client.gui.SortedGuiConfigFactory")
 public class CustomFoV {
 
     public static final String MODID = "customfov";

+ 43 - 0
src/main/java/c4/customfov/client/gui/SortedGuiConfig.java

@@ -0,0 +1,43 @@
+package c4.customfov.client.gui;
+
+import c4.customfov.CustomFoV;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraftforge.common.config.ConfigElement;
+import net.minecraftforge.common.config.ConfigManager;
+import net.minecraftforge.fml.client.config.GuiConfig;
+import net.minecraftforge.fml.client.config.IConfigElement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SortedGuiConfig extends GuiConfig {
+
+    public SortedGuiConfig(GuiScreen parentScreen) {
+        this(parentScreen, CustomFoV.MODID, false, false, CustomFoV.NAME,
+                ConfigManager.getModConfigClasses(CustomFoV.MODID));
+    }
+
+    public SortedGuiConfig(GuiScreen parentScreen, String modID, boolean allRequireWorldRestart,
+                           boolean allRequireMcRestart, String title, Class<?>... configClasses) {
+        super(parentScreen, collectConfigElements(configClasses), modID, null, allRequireWorldRestart,
+                allRequireMcRestart, title, null);
+    }
+
+    private static List<IConfigElement> collectConfigElements(Class<?>[] configClasses)
+    {
+        List<IConfigElement> toReturn;
+        if(configClasses.length == 1)
+        {
+            toReturn = ConfigElement.from(configClasses[0]).getChildElements();
+        }
+        else
+        {
+            toReturn = new ArrayList<>();
+            for(Class<?> clazz : configClasses)
+            {
+                toReturn.add(ConfigElement.from(clazz));
+            }
+        }
+        return toReturn;
+    }
+}

+ 34 - 0
src/main/java/c4/customfov/client/gui/SortedGuiConfigFactory.java

@@ -0,0 +1,34 @@
+package c4.customfov.client.gui;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraftforge.fml.client.DefaultGuiFactory;
+import net.minecraftforge.fml.client.IModGuiFactory;
+import net.minecraftforge.fml.client.config.GuiConfig;
+
+import java.util.Set;
+
+public class SortedGuiConfigFactory implements IModGuiFactory {
+
+    public SortedGuiConfigFactory() {}
+
+    @Override
+    public boolean hasConfigGui()
+    {
+        return true;
+    }
+
+    @Override
+    public void initialize(Minecraft minecraftInstance) {}
+
+    @Override
+    public GuiScreen createConfigGui(GuiScreen parentScreen) {
+        return new SortedGuiConfig(parentScreen);
+    }
+
+    @Override
+    public Set<RuntimeOptionCategoryElement> runtimeGuiCategories()
+    {
+        return null;
+    }
+}