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 70bf800b34..2895fc31fb 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 @@ -78,16 +78,20 @@ class ConfigInvocationHandler implements InvocationHandler // Convert value to return type Class returnType = method.getReturnType(); - Object objectValue = ConfigManager.stringToObject(value, returnType); - - // objectValue automatically gets unboxed -// if (!objectValue.getClass().equals(returnType)) -// { -// log.warn("Unable to convert return type for configuration item {}.{}: {}", group.keyName(), item.keyName(), returnType); -// return null; -// } - - return objectValue; + + try + { + return ConfigManager.stringToObject(value, returnType); + } + catch (Exception e) + { + log.warn("Unable to unmarshal {}.{} ", group.keyName(), item.keyName(), e); + if (method.isDefault()) + { + return callDefaultMethod(proxy, method, args); + } + return null; + } } else { 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 ce731320a4..5501345dc3 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 @@ -254,7 +254,14 @@ public class ConfigManager String value = getConfiguration(groupName, key); if (!Strings.isNullOrEmpty(value)) { - return (T) stringToObject(value, clazz); + try + { + return (T) stringToObject(value, clazz); + } + catch (Exception e) + { + log.warn("Unable to unmarshal {}.{} ", groupName, key, e); + } } return null; }