update config library, now the GUI supports multiple config classes at once

This commit is contained in:
FalsePattern committed 2022-07-30 20:47:24 +02:00
1 parent 233b532c2e
commit 6e954f3129
2 files changed
+38 -1

No files matched your search

@@ -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<IConfigElement> 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<IConfigElement> getConfigElementsMulti(Class<?>... configClasses) throws ConfigException {
switch (configClasses.length) {
case 0: return Collections.emptyList();
case 1: return getConfigElements(configClasses[0]);
default:
val result = new ArrayList<IConfigElement>();
for (val configClass: configClasses) {
result.addAll(getConfigElements(configClass));
}
return result;
}
}
}
@@ -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"));
}
}