From a744e6e35429948f88bc474dff8607f5800680e7 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 19 Jul 2025 18:54:35 +0200 Subject: [PATCH] config: Add forRemoval option --- .../main/java/com/fancyinnovations/config/Config.java | 9 +++++++++ .../java/com/fancyinnovations/config/ConfigField.java | 1 + .../de/oliver/fancyholograms/config/FHConfiguration.java | 7 +++++++ 3 files changed, 17 insertions(+) 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 90e1bf63..fd2990cd 100644 --- a/libraries/config/src/main/java/com/fancyinnovations/config/Config.java +++ b/libraries/config/src/main/java/com/fancyinnovations/config/Config.java @@ -71,6 +71,15 @@ public class Config { String path = entry.getKey(); ConfigField field = entry.getValue(); + if (field.forRemoval()) { + if (yaml.isSet(path)) { + logger.debug("Removing path '" + path + "' from config"); + yaml.set(path, null); + dirty = true; + } + continue; + } + if (yaml.isSet(path)) { Object value = yaml.get(path); if (field.type().isInstance(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 dea25ad4..300b03bf 100644 --- a/libraries/config/src/main/java/com/fancyinnovations/config/ConfigField.java +++ b/libraries/config/src/main/java/com/fancyinnovations/config/ConfigField.java @@ -3,6 +3,7 @@ package com.fancyinnovations.config; public record ConfigField( String path, String description, + boolean forRemoval, T defaultValue, 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 d67f3a36..c8e54ab0 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 @@ -26,12 +26,14 @@ public final class FHConfiguration implements HologramConfiguration { MUTE_VERSION_NOTIFICATION_PATH, "Whether version notifications are muted.", false, + false, Boolean.class )); config.addField(new ConfigField<>( ENABLE_AUTOSAVE_PATH, "Whether autosave is enabled.", + false, true, Boolean.class )); @@ -39,6 +41,7 @@ public final class FHConfiguration implements HologramConfiguration { config.addField(new ConfigField<>( AUTOSAVE_INTERVAL_PATH, "The interval at which autosave is performed in minutes.", + false, 15, Integer.class )); @@ -46,6 +49,7 @@ public final class FHConfiguration implements HologramConfiguration { config.addField(new ConfigField<>( SAVE_ON_CHANGED_PATH, "Whether the plugin should save holograms when they are changed.", + false, true, Boolean.class )); @@ -53,6 +57,7 @@ public final class FHConfiguration implements HologramConfiguration { config.addField(new ConfigField<>( VISIBILITY_DISTANCE_PATH, "The default visibility distance for holograms.", + false, 20, Integer.class )); @@ -60,6 +65,7 @@ public final class FHConfiguration implements HologramConfiguration { config.addField(new ConfigField<>( REGISTER_COMMANDS_PATH, "Whether the plugin should register its commands.", + false, true, Boolean.class )); @@ -67,6 +73,7 @@ public final class FHConfiguration implements HologramConfiguration { config.addField(new ConfigField<>( LOG_LEVEL_PATH, "The log level for the plugin (DEBUG, INFO, WARN, ERROR).", + false, "INFO", String.class ));