diff --git a/build.gradle b/build.gradle index 39d1959..799d85d 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ allprojects { } group = 'me.vaperion.blade' - version = '3.0.5' + version = '3.0.6' // workaround for gradle issue: https://github.com/gradle/gradle/issues/17236#issuecomment-894385386 tasks.withType(Copy).all { diff --git a/bukkit/src/main/java/me/vaperion/blade/bukkit/platform/BukkitHelpGenerator.java b/bukkit/src/main/java/me/vaperion/blade/bukkit/platform/BukkitHelpGenerator.java index 3c50064..9fd9bde 100644 --- a/bukkit/src/main/java/me/vaperion/blade/bukkit/platform/BukkitHelpGenerator.java +++ b/bukkit/src/main/java/me/vaperion/blade/bukkit/platform/BukkitHelpGenerator.java @@ -17,13 +17,18 @@ public class BukkitHelpGenerator implements HelpGenerator { @NotNull @Override public List generate(@NotNull Context context, @NotNull List commands) { - commands = commands.stream().distinct().filter(c -> !c.isHidden()).collect(Collectors.toList()); + commands = commands.stream() + .distinct() + .filter(c -> !c.isHidden()) + .sorted(context.blade().getConfiguration().getHelpSorter()) + .collect(Collectors.toList()); int originalCount = commands.size(); - commands = commands.stream().filter(c -> context.blade().getPermissionTester().testPermission(context, c)) + commands = commands.stream() + .filter(c -> context.blade().getPermissionTester().testPermission(context, c)) .collect(Collectors.toList()); - if (originalCount != 0 && commands.size() == 0) { + if (originalCount != 0 && commands.isEmpty()) { return Collections.singletonList(ChatColor.RED + context.blade().getConfiguration().getDefaultPermissionMessage()); } diff --git a/core/src/main/java/me/vaperion/blade/platform/BladeConfiguration.java b/core/src/main/java/me/vaperion/blade/platform/BladeConfiguration.java index 81d825e..5c6bf31 100644 --- a/core/src/main/java/me/vaperion/blade/platform/BladeConfiguration.java +++ b/core/src/main/java/me/vaperion/blade/platform/BladeConfiguration.java @@ -2,8 +2,10 @@ import lombok.Getter; import lombok.Setter; +import me.vaperion.blade.command.Command; import me.vaperion.blade.util.Preconditions; +import java.util.Comparator; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.function.Consumer; @@ -26,6 +28,8 @@ public final class BladeConfiguration { private HelpGenerator helpGenerator; private TabCompleter tabCompleter; + private Comparator helpSorter = Comparator.comparing(Command::getUsageAlias); + public void validate() { Preconditions.checkNotNull(pluginInstance, "Plugin instance cannot be null."); Preconditions.checkNotNull(fallbackPrefix, "Fallback prefix cannot be null."); diff --git a/velocity/src/main/java/me/vaperion/blade/velocity/platform/VelocityHelpGenerator.java b/velocity/src/main/java/me/vaperion/blade/velocity/platform/VelocityHelpGenerator.java index ae88812..0ad4e79 100644 --- a/velocity/src/main/java/me/vaperion/blade/velocity/platform/VelocityHelpGenerator.java +++ b/velocity/src/main/java/me/vaperion/blade/velocity/platform/VelocityHelpGenerator.java @@ -18,13 +18,18 @@ public class VelocityHelpGenerator implements HelpGenerator { @Override public @NotNull List generate(@NotNull Context context, @NotNull List commands) { - commands = commands.stream().distinct().filter(c -> !c.isHidden()).collect(Collectors.toList()); + commands = commands.stream() + .distinct() + .filter(c -> !c.isHidden()) + .sorted(context.blade().getConfiguration().getHelpSorter()) + .collect(Collectors.toList()); int originalCount = commands.size(); - commands = commands.stream().filter(c -> context.blade().getPermissionTester().testPermission(context, c)) + commands = commands.stream() + .filter(c -> context.blade().getPermissionTester().testPermission(context, c)) .collect(Collectors.toList()); - if (originalCount != 0 && commands.size() == 0) { + if (originalCount != 0 && commands.isEmpty()) { return Collections.singletonList("&c" + context.blade().getConfiguration().getDefaultPermissionMessage()); }