aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/Config.java101
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Button.java24
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Checkbox.java22
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Color.java22
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Dropdown.java24
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/DualOption.java26
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Header.java22
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Info.java25
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/KeyBind.java22
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Option.java85
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Slider.java26
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Switch.java22
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/annotations/Text.java28
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceConfig.java14
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/compatibility/vigilance/VigilanceName.java (renamed from src/main/java/cc/polyfrost/oneconfig/config/annotations/VigilanceName.java)2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/core/ConfigUtils.java81
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/data/Mod.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java35
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java15
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/migration/Migrator.java (renamed from src/main/java/cc/polyfrost/oneconfig/config/migration/vigilance/Migrator.java)2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/migration/VigilanceMigrator.java (renamed from src/main/java/cc/polyfrost/oneconfig/config/migration/vigilance/VigilanceMigrator.java)4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/config/profiles/Profiles.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/HudGui.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/OneConfigGui.java3
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/SideBar.java3
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/BasicButton.java4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/ColorSelector.java6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/ModCard.java4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/Slider.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigButton.java16
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigCheckbox.java14
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigColorElement.java14
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDropdown.java14
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigDualOption.java15
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigHeader.java13
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigInfo.java12
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigKeyBind.java14
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigPageButton.java11
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSlider.java17
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigSwitch.java12
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/config/ConfigTextBox.java23
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/text/NumberInputField.java4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/text/TextInputField.java4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/pages/CreditsPage.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/pages/HomePage.java4
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/pages/ModsPage.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/OneConfig.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/assets/Colors.java (renamed from src/main/java/cc/polyfrost/oneconfig/gui/Colors.java)2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/assets/Images.java (renamed from src/main/java/cc/polyfrost/oneconfig/renderer/image/Images.java)6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/assets/SVGs.java (renamed from src/main/java/cc/polyfrost/oneconfig/renderer/image/SVGs.java)6
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/config/annotations/Option.java14
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/config/core/ConfigCore.java (renamed from src/main/java/cc/polyfrost/oneconfig/internal/config/ConfigCore.java)2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/internal/plugin/asm/tweakers/VigilantTransformer.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java (renamed from src/main/java/cc/polyfrost/oneconfig/renderer/image/ImageLoader.java)34
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/RenderManager.java27
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/test/ButtonTestPage.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/test/TestConfig.java297
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/test/TestHud.java10
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/test/TestPage.java40
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/color/ColorPalette.java4
60 files changed, 621 insertions, 648 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.intern