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 400083b815..d85139cfdb 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 @@ -25,6 +25,7 @@ package net.runelite.client.config; import com.google.common.base.Strings; +import com.google.common.collect.ComparisonChain; import com.google.common.collect.ImmutableMap; import com.google.common.eventbus.EventBus; import java.awt.Color; @@ -45,7 +46,6 @@ import java.nio.channels.FileLock; import java.nio.charset.Charset; import java.time.Instant; import java.util.Arrays; -import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -375,14 +375,18 @@ public class ConfigManager throw new IllegalArgumentException("Not a config group"); } - List items = Arrays.stream(inter.getMethods()) + final List items = Arrays.stream(inter.getMethods()) .filter(m -> m.getParameterCount() == 0) - .sorted(Comparator.comparingInt(m -> m.getDeclaredAnnotation(ConfigItem.class).position())) .map(m -> new ConfigItemDescriptor( m.getDeclaredAnnotation(ConfigItem.class), m.getReturnType() )) + .sorted((a, b) -> ComparisonChain.start() + .compare(a.getItem().position(), b.getItem().position()) + .compare(a.getItem().name(), b.getItem().name()) + .result()) .collect(Collectors.toList()); + return new ConfigDescriptor(group, items); }