diff --git a/libraries/config/src/main/java/com/fancyinnovations/config/Config.java b/libraries/config/src/main/java/com/fancyinnovations/config/Config.java index 2bee1eef..cfefa740 100644 --- a/libraries/config/src/main/java/com/fancyinnovations/config/Config.java +++ b/libraries/config/src/main/java/com/fancyinnovations/config/Config.java @@ -45,12 +45,16 @@ public class Config { */ public T get(String path) { ConfigField field = fields.get(path); - if (field != null) { - Object value = values.computeIfAbsent(path, k -> field.defaultValue()); - return (T) field.type().cast(value); + if (field == null) { + return null; } - return null; + if (field.forceDefault()) { + return (T) field.defaultValue(); + } + + Object value = values.computeIfAbsent(path, k -> field.defaultValue()); + return (T) field.type().cast(value); } /** diff --git a/libraries/config/src/main/java/com/fancyinnovations/config/ConfigField.java b/libraries/config/src/main/java/com/fancyinnovations/config/ConfigField.java index 6a97d156..c4b64b11 100644 --- a/libraries/config/src/main/java/com/fancyinnovations/config/ConfigField.java +++ b/libraries/config/src/main/java/com/fancyinnovations/config/ConfigField.java @@ -8,6 +8,7 @@ package com.fancyinnovations.config; * @param description a description of the field * @param forRemoval indicates if this field should be removed * @param defaultValue the default value of the field + * @param forceDefault indicates if the default value should be enforced * @param type the class type of the field value */ public record ConfigField( @@ -15,6 +16,7 @@ public record ConfigField( String description, boolean forRemoval, T defaultValue, + boolean forceDefault, Class type ) { } diff --git a/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java b/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java index 75c2e0b9..14321ea8 100644 --- a/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java +++ b/plugins/fancyholograms/src/main/java/de/oliver/fancyholograms/config/FHConfiguration.java @@ -20,12 +20,13 @@ public final class FHConfiguration implements HologramConfiguration { public void init() { config = new Config(FancyHologramsPlugin.get().getFancyLogger(), CONFIG_FILE_PATH); - + config.addField(new ConfigField<>( MUTE_VERSION_NOTIFICATION_PATH, "Whether version notifications are muted.", false, false, + false, Boolean.class )); @@ -34,6 +35,7 @@ public final class FHConfiguration implements HologramConfiguration { "Whether autosave is enabled.", false, true, + false, Boolean.class )); @@ -42,6 +44,7 @@ public final class FHConfiguration implements HologramConfiguration { "The interval at which autosave is performed in minutes.", false, 15, + false, Integer.class )); @@ -50,6 +53,7 @@ public final class FHConfiguration implements HologramConfiguration { "Whether the plugin should save holograms when they are changed.", false, true, + false, Boolean.class )); @@ -58,6 +62,7 @@ public final class FHConfiguration implements HologramConfiguration { "The default visibility distance for holograms.", false, 20, + false, Integer.class )); @@ -66,6 +71,7 @@ public final class FHConfiguration implements HologramConfiguration { "Whether the plugin should register its commands.", false, true, + false, Boolean.class )); @@ -74,6 +80,7 @@ public final class FHConfiguration implements HologramConfiguration { "The log level for the plugin (DEBUG, INFO, WARN, ERROR).", false, "INFO", + false, String.class ));