diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index a4ead1cf32..05917a7f82 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -43,6 +43,7 @@ import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Properties; import java.util.concurrent.ScheduledExecutorService; import java.util.stream.Collectors; @@ -390,11 +391,25 @@ public class ConfigManager { ConfigItem item = method.getAnnotation(ConfigItem.class); - if (item == null || !method.isDefault()) + if (item == null) { continue; } + if (!method.isDefault()) + { + if (override) + { + String current = getConfiguration(group.keyName(), item.keyName()); + // only unset if already set + if (current != null) + { + unsetConfiguration(group.keyName(), item.keyName()); + } + } + continue; + } + if (!override) { String current = getConfiguration(group.keyName(), item.keyName()); @@ -415,9 +430,15 @@ public class ConfigManager continue; } + String current = getConfiguration(group.keyName(), item.keyName()); + String valueString = objectToString(defaultValue); + if (Objects.equals(current, valueString)) + { + continue; // already set to the default value + } + log.debug("Setting default configuration value for {}.{} to {}", group.keyName(), item.keyName(), defaultValue); - String valueString = objectToString(defaultValue); setConfiguration(group.keyName(), item.keyName(), valueString); } }