diff options
| author | Wyvest <45589059+Wyvest@users.noreply.github.com> | 2022-06-07 21:15:51 +0700 |
|---|---|---|
| committer | Wyvest <45589059+Wyvest@users.noreply.github.com> | 2022-06-07 21:15:51 +0700 |
| commit | 98ed87a68284f1f0756b01c07d957cbb4bd4e09c (patch) | |
| tree | c72f4563aab765dbffa3804475a4e7e57907bc76 /src/main/java/cc/polyfrost/oneconfig/config | |
| parent | 44f69da8e5eb1a10e3833bd55dd97a7bd274f2ca (diff) | |
| parent | 4d447988d5318895a92256cde93420456a04bd57 (diff) | |
| download | OneConfig-98ed87a68284f1f0756b01c07d957cbb4bd4e09c.tar.gz OneConfig-98ed87a68284f1f0756b01c07d957cbb4bd4e09c.tar.bz2 OneConfig-98ed87a68284f1f0756b01c07d957cbb4bd4e09c.zip | |
Merge branch 'master' of https://github.com/Polyfrost/OneConfig
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config')
22 files changed, 371 insertions, 235 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/Config.java b/src/main/java/cc/polyfrost/oneconfig/config/Config.java index 2c51387..de6c575 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/Config.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/Config.java @@ -1,24 +1,19 @@ package cc.polyfrost.oneconfig.config; -import cc.polyfrost.oneconfig.config.annotations.ConfigPage; -import cc.polyfrost.oneconfig.config.annotations.Option; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; import cc.polyfrost.oneconfig.config.core.ConfigUtils; -import cc.polyfrost.oneconfig.internal.config.ConfigCore; +import cc.polyfrost.oneconfig.internal.config.core.ConfigCore; import cc.polyfrost.oneconfig.config.data.*; import cc.polyfrost.oneconfig.config.elements.BasicOption; -import cc.polyfrost.oneconfig.config.elements.OptionCategory; import cc.polyfrost.oneconfig.config.elements.OptionPage; -import cc.polyfrost.oneconfig.config.elements.OptionSubcategory; import cc.polyfrost.oneconfig.config.profiles.Profiles; import cc.polyfrost.oneconfig.gui.OneConfigGui; -import cc.polyfrost.oneconfig.gui.elements.config.*; import cc.polyfrost.oneconfig.gui.pages.ModConfigPage; -import cc.polyfrost.oneconfig.hud.BasicHud; -import cc.polyfrost.oneconfig.internal.hud.HudCore; import cc.polyfrost.oneconfig.utils.gui.GuiUtils; import com.google.gson.*; import java.io.*; +import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.nio.charset.StandardCharsets; @@ -87,89 +82,11 @@ public class Config { * @param migrate whether the migrator should be run */ protected void generateOptionList(Object instance, OptionPage page, Mod mod, boolean migrate) { - Class<?> clazz = instance.getClass(); - for (Field field : clazz.getDeclaredFields()) { - String pagePrefix = page.equals(mod.defaultPage) ? "" : page.name + "."; - if (!field.isAnnotationPresent(Option.class) && !field.isAnnotationPresent(ConfigPage.class)) { - processCustomOption(field, page); - continue; - } else if (field.isAnnotationPresent(ConfigPage.class)) { - ConfigPage option = field.getAnnotation(ConfigPage.class); - if (!page.categories.containsKey(option.category())) - page.categories.put(option.category(), new OptionCategory()); - OptionCategory category = page.categories.get(option.category()); - if (category.subcategories.size() == 0 || !category.subcategories.get(category.subcategories.size() - 1).getName().equals(option.subcategory())) - category.subcategories.add(new OptionSubcategory(option.subcategory())); - OptionSubcategory subcategory = category.subcategories.get(category.subcategories.size() - 1); - OptionPage newPage = new OptionPage(option.name(), mod); - try { - field.setAccessible(true); - Object object = field.get(clazz); - generateOptionList(object, newPage, mod, migrate); - ConfigPageButton configPageButton = new ConfigPageButton(field, instance, option.name(), option.description(), newPage); - switch (option.location()) { - case TOP: - subcategory.topButtons.add(configPageButton); - break; - case BOTTOM: - subcategory.bottomButtons.add(configPageButton); - break; - } - optionNames.put(pagePrefix + field.getName(), configPageButton); - } catch (IllegalAccessException ignored) { - } - continue; - } - Option option = field.getAnnotation(Option.class); - if (!page.categories.containsKey(option.category())) - page.categories.put(option.category(), new OptionCategory()); - OptionCategory category = page.categories.get(option.category()); - if (category.subcategories.size() == 0 || !category.subcategories.get(category.subcategories.size() - 1).getName().equals(option.subcategory())) - category.subcategories.add(new OptionSubcategory(option.subcategory())); - if (migrate) { - try { - Object value = mod.migrator.getValue(field, option.name(), option.category(), option.subcategory()); - if (value != null) { - field.setAccessible(true); - field.set(instance, value); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - ArrayList<BasicOption> options = category.subcategories.get(category.subcategories.size() - 1).options; - if (option.type() == OptionType.HUD) { - try { - field.setAccessible(true); - BasicHud hud = (BasicHud) field.get(instance); - HudCore.huds.add(hud); - options.add(new ConfigHeader(field, hud, option.name(), 1)); - options.add(new ConfigSwitch(hud.getClass().getField("enabled"), hud, "Enabled", 1)); - options.addAll(ConfigUtils.getClassOptions(hud)); - options.add(new ConfigCheckbox(hud.getClass().getField("rounded"), hud, "Rounded corners", 1)); - options.get(options.size() - 1).setDependency(() -> hud.enabled); - options.add(new ConfigCheckbox(hud.getClass().getField("border"), hud, "Outline/border", 1)); - options.get(options.size() - 1).setDependency(() -> hud.enabled); - options.add(new ConfigColorElement(hud.getClass().getField("bgColor"), hud, "Background color:", 1)); - options.get(options.size() - 1).setDependency(() -> hud.enabled); - options.add(new ConfigColorElement(hud.getClass().getField("borderColor"), hud, "Border color:", 1)); - options.get(options.size() - 1).setDependency(() -> hud.enabled && hud.border); - options.add(new ConfigSlider(hud.getClass().getField("cornerRadius"), hud, "Corner radius:", 2, 0, 10, 0)); - options.get(options.size() - 1).setDependency(() -> hud.enabled && hud.rounded); - options.add(new ConfigSlider(hud.getClass().getField("borderSize"), hud, "Border thickness:", 2, 0, 10, 0)); - options.get(options.size() - 1).setDependency(() -> hud.enabled && hud.border); - options.add(new ConfigSlider(hud.getClass().getField("paddingX"), hud, "X-Padding", 2, 0, 50, 0)); - options.get(options.size() - 1).setDependency(() -> hud.enabled); - options.add(new ConfigSlider(hud.getClass().getField("paddingY"), hud, "Y-Padding", 2, 0, 50, 0)); - options.get(options.size() - 1).setDependency(() -> hud.enabled); - } catch (IllegalAccessException | NoSuchFieldException e) { - e.printStackTrace(); - } - } else { - options.add(ConfigUtils.getOption(option, field, instance)); - } - if (!option.type().equals(OptionType.HUD)) - optionNames.put(pagePrefix + field.getName(), options.get(options.size() - 1)); + for (Field field : instance.getClass().getDeclaredFields()) { + Option option = ConfigUtils.findAnnotation(field, Option.class); + if (option != null) + ConfigUtils.addOptionToPage(page, option, field, instance, migrate ? mod.migrator : null); + // TODO: Make dependencies work, pages, hud } } @@ -227,6 +144,6 @@ public class Config { */ protected void addDependency(String option, Supplier<Boolean> condition) { if (!optionNames.containsKey(option)) return; - optionNames.get(option).setDependency(condition); + optionNames.get(option).addDependency(condition); } } diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java new file mode 100644 index 0000000..300651f --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java @@ -0,0 +1,24 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.BUTTON) +public @interface Button { + String name(); + + String text(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java new file mode 100644 index 0000000..eae35e4 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java @@ -0,0 +1,22 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.CHECKBOX) +public @interface Checkbox { + String name(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java new file mode 100644 index 0000000..98cc5ec --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java @@ -0,0 +1,22 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.COLOR) +public @interface Color { + String name(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java new file mode 100644 index 0000000..1fbf162 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java @@ -0,0 +1,24 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.DROPDOWN) +public @interface Dropdown { + String name(); + + String[] options(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java new file mode 100644 index 0000000..f01d074 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java @@ -0,0 +1,26 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.DUAL_OPTION) +public @interface DualOption { + String name(); + + String left(); + + String right(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Header.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Header.java new file mode 100644 index 0000000..3821a01 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Header.java @@ -0,0 +1,22 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.HEADER) +public @interface Header { + String text(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Info.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Info.java new file mode 100644 index 0000000..3f058ed --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Info.java @@ -0,0 +1,25 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.InfoType; +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.INFO) +public @interface Info { + String text(); + + InfoType type(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java new file mode 100644 index 0000000..7d6cfdc --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java @@ -0,0 +1,22 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.KEYBIND) +public @interface KeyBind { + String name(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Option.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Option.java deleted file mode 100644 index f30f01e..0000000 --- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Option.java +++ /dev/null @@ -1,85 +0,0 @@ -package cc.polyfrost.oneconfig.config.annotations; - -import cc.polyfrost.oneconfig.config.data.InfoType; -import cc.polyfrost.oneconfig.config.data.OptionType; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.FIELD) -public @interface Option { - /** - * The name of the option that will be displayed to the user - */ - String name(); - - /** - * The type of the option - */ - OptionType type(); - - /** - * The category of the component - */ - String category() default "General"; - - /** - * The subcategory of the component (displayed as header) - */ - String subcategory() default ""; - - /** - * The width of the option (1 = half width, 2 = full width) - */ - int size() default 1; - - /** - * A String array of all the possible values for the UniSelector, dropdownList, and ComboBox. - * Also used in the DualOption slider, index 0 is the left, index 1 is the right; for example: - * {"Option 1", "Option 2"} - */ - String[] options() default {}; - - /** - * The placeholder in the text field - */ - String placeholder() default ""; - - /** - * If the text field is secure or not - */ - boolean secure() default false; - - /** - * If the text field is multi line or not - */ - boolean multiLine() default false; - - /** - * Minimum value of slider - */ - float min() default 0; - - /** - * The maximum value of the slider - */ - float max() default 0; - - /** - * Steps of slider (0 for no steps) - */ - int step() default 0; - - /** - * Option for info option type - */ - InfoType infoType() default InfoType.INFO; - - /** - * Text displayed inside button - */ - String buttonText() default "Activate"; -} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java new file mode 100644 index 0000000..144d329 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java @@ -0,0 +1,26 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.SLIDER) +public @interface Slider { + String name(); + + float min(); + + float max(); + + int step() default 0; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java new file mode 100644 index 0000000..d3b8e80 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java @@ -0,0 +1,22 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.SWITCH) +public @interface Switch { + String name(); + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java new file mode 100644 index 0000000..90e5779 --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java @@ -0,0 +1,28 @@ +package cc.polyfrost.oneconfig.config.annotations; + +import cc.polyfrost.oneconfig.config.data.OptionType; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Option(type = OptionType.TEXT) +public @interface Text { + String name(); + + String placeholder() default ""; + + boolean secure() default false; + + boolean multiline() default false; + + int size() default 1; + + String category() default "General"; + + String subcategory() default ""; +} diff --git a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java index 3b0fcd6..a34b792 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java @@ -1,6 +1,6 @@ package cc.polyfrost.oneconfig.config.compatibility.vigilance; -import cc.polyfrost.oneconfig.internal.config.ConfigCore; +import cc.polyfrost.oneconfig.internal.config.core.ConfigCore; import cc.polyfrost.oneconfig.config.core.OneColor; import cc.polyfrost.oneconfig.config.data.Mod; import cc.polyfrost.oneconfig.config.elements.OptionCategory; @@ -55,7 +55,7 @@ public class VigilanceConfig extends Config { } private void generateOptionsList(OptionPage page) { - for (PropertyData option : ((VigilantAccessor) vigilant).getPropertyCollector().getProperties()) { + /*for (PropertyData option : ((VigilantAccessor) vigilant).getPropertyCollector().getProperties()) { PropertyAttributesExt attributes = option.getAttributesExt(); if (attributes.getHidden()) continue; if (!page.categories.containsKey(getCategory(attributes))) @@ -66,7 +66,7 @@ public class VigilanceConfig extends Config { ArrayList<BasicOption> options = category.subcategories.get(category.subcategories.size() - 1).options; switch (attributes.getType()) { case SWITCH: - options.add(new ConfigSwitch(getFieldOfProperty(option), option.getInstance(), getName(attributes), 2)); + options.add(new ConfigSwitch(getFieldOfProperty(option), option.getInstance(), getName(attributes), "", "", 2)); break; case CHECKBOX: options.add(new ConfigCheckbox(getFieldOfProperty(option), option.getInstance(), getName(attributes), 2)); @@ -97,7 +97,7 @@ public class VigilanceConfig extends Config { if (attributes.getType() == PropertyType.SWITCH || attributes.getType() == PropertyType.CHECKBOX) { optionNames.put(PropertyKt.fullPropertyPath(option.getAttributesExt()), options.get(options.size() - 1)); } - } + }*/ } private Field getFieldOfProperty(PropertyData data) { @@ -163,11 +163,11 @@ public class VigilanceConfig extends Config { public void addDependency(PropertyData property, PropertyData dependency) { BasicOption option = optionNames.get(PropertyKt.fullPropertyPath(property.getAttributesExt())); if (option != null) { - option.setDependency(() -> Objects.equals(dependency.getValue().getValue(vigilant), true)); + option.addDependency(() -> Objects.equals(dependency.getValue().getValue(vigilant), true)); } } - private static class CompatConfigColorElement extends ConfigColorElement { + /*private static class CompatConfigColorElement extends ConfigColorElement { private final Field color; private Color prevColor = null; private OneColor cachedColor = null; @@ -198,5 +198,5 @@ public class VigilanceConfig extends Config { } } } - } + }*/ } diff --git a/src/main/java/cc/polyfrost/oneconfig/config/annotations/VigilanceName.java b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java index e4b042a..8417ad8 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/annotations/VigilanceName.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java @@ -1,4 +1,4 @@ -package cc.polyfrost.oneconfig.config.annotations; +package cc.polyfrost.oneconfig.config.compatibility.vigilance; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/cc/polyfrost/oneconfig/config/core/ConfigUtils.java b/src/main/java/cc/polyfrost/oneconfig/config/core/ConfigUtils.java index d44488d..2002b01 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/core/ConfigUtils.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/core/ConfigUtils.java @@ -1,9 +1,15 @@ package cc.polyfrost.oneconfig.config.core; -import cc.polyfrost.oneconfig.config.annotations.Option; import cc.polyfrost.oneconfig.config.elements.BasicOption; +import cc.polyfrost.oneconfig.config.elements.OptionCategory; +import cc.polyfrost.oneconfig.config.elements.OptionPage; +import cc.polyfrost.oneconfig.config.elements.OptionSubcategory; +import cc.polyfrost.oneconfig.config.migration.Migrator; import cc.polyfrost.oneconfig.gui.elements.config.*; +import cc.polyfrost.oneconfig.internal.config.annotations.Option; +import org.jetbrains.annotations.Nullable; +import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.ArrayList; @@ -11,38 +17,69 @@ public class ConfigUtils { public static BasicOption getOption(Option option, Field field, Object instance) { switch (option.type()) { case SWITCH: - return new ConfigSwitch(field, instance, option.name(), option.size()); + return ConfigSwitch.create(field, instance); case CHECKBOX: - return new ConfigCheckbox(field, instance, option.name(), option.size()); - case TEXT: - return new ConfigTextBox(field, instance, option.name(), option.size(), option.placeholder(), option.secure(), option.multiLine()); - case DUAL_OPTION: - return new ConfigDualOption(field, instance, option.name(), option.size(), option.options()); - case DROPDOWN: - return new ConfigDropdown(field, instance, option.name(), option.size(), option.options()); - case SLIDER: - return new ConfigSlider(field, instance, option.name(), option.size(), option.min(), option.max(), option.step()); + return ConfigCheckbox.create(field, instance); case INFO: - return new ConfigInfo(field, instance, option.name(), option.size(), option.infoType()); - case COLOR: - return new ConfigColorElement(field, instance, option.name(), option.size()); + return ConfigInfo.create(field, instance); case HEADER: - return new ConfigHeader(field, instance, option.name(), option.size()); + return ConfigHeader.create(field, instance); + case COLOR: + return ConfigColorElement.create(field, instance); + case DROPDOWN: + return ConfigDropdown.create(field, instance); + case TEXT: + return ConfigTextBox.create(field, instance); case BUTTON: - return new ConfigButton(field, instance, option.name(), option.size(), option.buttonText()); + return ConfigButton.create(field, instance); + case SLIDER: + return ConfigSlider.create(field, instance); case KEYBIND: - return new ConfigKeyBind(field, instance, option.name(), option.size()); + return ConfigKeyBind.create(field, instance); + case DUAL_OPTION: + return ConfigDualOption.create(field, instance); } return null; } - public static ArrayList<BasicOption> getClassOptions(Object hud) { + public static ArrayList<BasicOption |
