diff --git a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java index 81f009b..115b563 100644 --- a/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java +++ b/src/main/java/com/falsepattern/lib/config/ConfigurationManager.java @@ -24,9 +24,12 @@ import com.falsepattern.lib.StableAPI; import com.falsepattern.lib.internal.impl.config.ConfigurationManagerImpl; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import lombok.val; import cpw.mods.fml.client.config.IConfigElement; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -56,4 +59,26 @@ public class ConfigurationManager { public static List getConfigElements(Class configClass) throws ConfigException { return ConfigurationManagerImpl.getConfigElements(configClass); } + + /** + * Same as {@link #getConfigElements(Class)}, but for multiple config classes at once. + * + * @param configClasses The classes to process. + * + * @return The configuration elements. + */ + @SuppressWarnings("rawtypes") + @StableAPI(since = "0.10.0") + public static List getConfigElementsMulti(Class... configClasses) throws ConfigException { + switch (configClasses.length) { + case 0: return Collections.emptyList(); + case 1: return getConfigElements(configClasses[0]); + default: + val result = new ArrayList(); + for (val configClass: configClasses) { + result.addAll(getConfigElements(configClass)); + } + return result; + } + } } diff --git a/src/main/java/com/falsepattern/lib/config/SimpleGuiConfig.java b/src/main/java/com/falsepattern/lib/config/SimpleGuiConfig.java index 0739245..d7a2f05 100644 --- a/src/main/java/com/falsepattern/lib/config/SimpleGuiConfig.java +++ b/src/main/java/com/falsepattern/lib/config/SimpleGuiConfig.java @@ -21,16 +21,28 @@ package com.falsepattern.lib.config; import com.falsepattern.lib.StableAPI; +import lombok.val; + import cpw.mods.fml.client.config.GuiConfig; +import cpw.mods.fml.client.config.IConfigElement; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.resources.I18n; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + @SideOnly(Side.CLIENT) @StableAPI(since = "0.9.0") public class SimpleGuiConfig extends GuiConfig { public SimpleGuiConfig(GuiScreen parent, Class configClass, String modID, String modName) throws ConfigException { - super(parent, ConfigurationManager.getConfigElements(configClass), modID, false, false, modName + " Configuration", I18n.format("falsepatternlib.gui.config.description")); + this(parent, new Class[]{configClass}, modID, modName); + } + + @StableAPI(since = "0.10.0") + public SimpleGuiConfig(GuiScreen parent, Class[] configClasses, String modID, String modName) throws ConfigException { + super(parent, ConfigurationManager.getConfigElementsMulti(configClasses), modID, false, false, modName + " Configuration", I18n.format("falsepatternlib.gui.config.description")); } }