diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigInvocationHandler.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigInvocationHandler.java index 5450a9132f..f2aa57ff3e 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigInvocationHandler.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigInvocationHandler.java @@ -24,11 +24,11 @@ */ package net.runelite.client.config; -import com.google.common.base.Objects; import java.lang.invoke.MethodHandles; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; +import java.util.Objects; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -104,11 +104,20 @@ class ConfigInvocationHandler implements InvocationHandler Object newValue = args[0]; + Class type = method.getParameterTypes()[0]; + Object oldValue = manager.getConfiguration(group.value(), item.keyName(), type); + + if (Objects.equals(oldValue, newValue)) + { + // nothing to do + return null; + } + if (method.isDefault()) { Object defaultValue = callDefaultMethod(proxy, method, args); - if (Objects.equal(newValue, defaultValue)) + if (Objects.equals(newValue, defaultValue)) { // Just unset if it goes back to the default manager.unsetConfiguration(group.value(), item.keyName());