From c48eb284349fa815a59658e3bce465408c0f3318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20S=C3=B6derberg?= Date: Fri, 18 Dec 2020 19:35:00 +0100 Subject: [PATCH] :bug: Fix issues with the help system --- .../cloud/commandframework/CommandHelpHandler.java | 14 +++++++++++--- .../examples/bukkit/ExamplePlugin.java | 10 +++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cloud-core/src/main/java/cloud/commandframework/CommandHelpHandler.java b/cloud-core/src/main/java/cloud/commandframework/CommandHelpHandler.java index 55d29c42..944ce118 100644 --- a/cloud-core/src/main/java/cloud/commandframework/CommandHelpHandler.java +++ b/cloud-core/src/main/java/cloud/commandframework/CommandHelpHandler.java @@ -207,12 +207,16 @@ public final class CommandHelpHandler { } else { if (index < queryFragments.length) { /* We might still be able to match an argument */ + CommandTree.Node> potentialVariable = null; for (final CommandTree.Node> child : head.getChildren()) { - @SuppressWarnings("unchecked") final StaticArgument childArgument = (StaticArgument) child - .getValue(); - if (childArgument == null) { + if (!(child.getValue() instanceof StaticArgument)) { + if (child.getValue() != null) { + potentialVariable = child; + } continue; } + @SuppressWarnings("unchecked") final StaticArgument childArgument = (StaticArgument) child + .getValue(); for (final String childAlias : childArgument.getAliases()) { if (childAlias.equalsIgnoreCase(queryFragments[index])) { head = child; @@ -220,6 +224,10 @@ public final class CommandHelpHandler { } } } + if (potentialVariable != null) { + head = potentialVariable; + continue; + } } final String currentDescription = this.commandManager.getCommandSyntaxFormatter().apply(traversedNodes, null); /* Attempt to parse the longest possible description for the children */ diff --git a/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java b/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java index 0590cf1b..5f66ded9 100644 --- a/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java +++ b/examples/example-bukkit/src/main/java/cloud/commandframework/examples/bukkit/ExamplePlugin.java @@ -274,7 +274,15 @@ public final class ExamplePlugin extends JavaPlugin { player.sendMessage(ChatColor.RED + "No entity matched your query."); } }).execute() - )); + )) + .command(builder.literal("teleport") + .meta(CommandMeta.DESCRIPTION, "Teleport to a world") + .argument(WorldArgument.of("world"), Description.of("World to teleport to")) + .handler(context -> manager.taskRecipe().begin(context).synchronous(ctx -> { + final Player player = (Player) ctx.getSender(); + player.teleport(ctx.get("world").getSpawnLocation()); + player.sendMessage(ChatColor.GREEN + "You have been teleported!"); + }).execute())); manager.command(builder.literal("tasktest") .handler(context -> manager.taskRecipe() .begin(context)