diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-07-04 15:03:56 +0200 |
---|---|---|
committer | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-07-04 15:03:56 +0200 |
commit | 5c51b22ee6ebd2b286603ff2f0dc5799963ab4c3 (patch) | |
tree | 7b3f08a451e22ec89872becc2edb433bb98e921b /src/main/java/cc/polyfrost/oneconfig/config/elements | |
parent | 08d0986b2d6beaff2554f1b821dcefc996cb8c11 (diff) | |
download | OneConfig-5c51b22ee6ebd2b286603ff2f0dc5799963ab4c3.tar.gz OneConfig-5c51b22ee6ebd2b286603ff2f0dc5799963ab4c3.tar.bz2 OneConfig-5c51b22ee6ebd2b286603ff2f0dc5799963ab4c3.zip |
reseting system
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/config/elements')
4 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java index 86b339b..6f9b47a 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/BasicOption.java @@ -1,5 +1,7 @@ package cc.polyfrost.oneconfig.config.elements; +import cc.polyfrost.oneconfig.config.Config; + import java.lang.reflect.Field; import java.util.ArrayList; import java.util.function.Supplier; @@ -86,6 +88,20 @@ public abstract class BasicOption { } /** + * Reset the field to its default value + * + * @param config The config the field is in + */ + public void reset(Config config) { + Object object = config.getDefault(field); + if (object == null) return; + try { + set(object); + } catch (IllegalAccessException ignored) { + } + } + + /** * @return If the option is enabled, based on the dependencies */ public boolean isEnabled() { diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionCategory.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionCategory.java index 4a37bfc..f144f60 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionCategory.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionCategory.java @@ -1,7 +1,15 @@ package cc.polyfrost.oneconfig.config.elements; +import cc.polyfrost.oneconfig.config.Config; + import java.util.ArrayList; public class OptionCategory { public final ArrayList<OptionSubcategory> subcategories = new ArrayList<>(); + + public void reset(Config config) { + for (OptionSubcategory subcategory : subcategories) { + subcategory.reset(config); + } + } } diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionPage.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionPage.java index 5eaac8b..916e1d9 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionPage.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionPage.java @@ -1,5 +1,6 @@ package cc.polyfrost.oneconfig.config.elements; +import cc.polyfrost.oneconfig.config.Config; import cc.polyfrost.oneconfig.config.data.Mod; import java.util.LinkedHashMap; @@ -13,4 +14,10 @@ public class OptionPage { this.name = name; this.mod = mod; } + + public void reset(Config config) { + for (OptionCategory subcategory : categories.values()) { + subcategory.reset(config); + } + } } diff --git a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java index 365ddb6..e1342d4 100644 --- a/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java +++ b/src/main/java/cc/polyfrost/oneconfig/config/elements/OptionSubcategory.java @@ -1,5 +1,6 @@ package cc.polyfrost.oneconfig.config.elements; +import cc.polyfrost.oneconfig.config.Config; import cc.polyfrost.oneconfig.internal.assets.Colors; import cc.polyfrost.oneconfig.gui.OneConfigGui; import cc.polyfrost.oneconfig.gui.elements.config.ConfigPageButton; @@ -104,4 +105,10 @@ public class OptionSubcategory { public String getName() { return name; } + + public void reset(Config config) { + for (BasicOption option : options) { + options.remove(config); + } + } } |