diff --git a/cloud-minecraft/cloud-bukkit-test/pom.xml b/cloud-minecraft/cloud-bukkit-test/pom.xml
index 239f1bdb..13ff3a6c 100644
--- a/cloud-minecraft/cloud-bukkit-test/pom.xml
+++ b/cloud-minecraft/cloud-bukkit-test/pom.xml
@@ -98,6 +98,12 @@
net.kyori
adventure-platform-bukkit
4.0.0-SNAPSHOT
+
+
+ 4.0.0-SNAPSHOT
+ adventure-platform-viaversion
+
+
diff --git a/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java b/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java
index 630a27ae..b8347acb 100644
--- a/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java
+++ b/cloud-minecraft/cloud-bukkit-test/src/main/java/com/intellectualsites/commands/BukkitTest.java
@@ -84,7 +84,9 @@ public final class BukkitTest extends JavaPlugin {
);
final BukkitAudiences bukkitAudiences = BukkitAudiences.create(this);
- final MinecraftHelp minecraftHelp = new MinecraftHelp<>(bukkitAudiences::audience, mgr);
+ final MinecraftHelp minecraftHelp = new MinecraftHelp<>("/cloud help",
+ bukkitAudiences::audience,
+ mgr);
try {
((PaperCommandManager) mgr).registerBrigadier();
diff --git a/cloud-minecraft/cloud-minecraft-extras/src/main/java/com/intellectualsites/commands/MinecraftHelp.java b/cloud-minecraft/cloud-minecraft-extras/src/main/java/com/intellectualsites/commands/MinecraftHelp.java
index 89f10fdb..c796b959 100644
--- a/cloud-minecraft/cloud-minecraft-extras/src/main/java/com/intellectualsites/commands/MinecraftHelp.java
+++ b/cloud-minecraft/cloud-minecraft-extras/src/main/java/com/intellectualsites/commands/MinecraftHelp.java
@@ -64,15 +64,19 @@ public final class MinecraftHelp {
private final AudienceProvider audienceProvider;
private final CommandManager commandManager;
+ private final String commandPrefix;
/**
* Construct a new Minecraft help instance
*
+ * @param commandPrefix Command that was used to trigger the help menu. Used to help insertion generation
* @param audienceProvider Provider that maps the command sender type to {@link Audience}
* @param commandManager Command manager instance
*/
- public MinecraftHelp(@Nonnull final AudienceProvider audienceProvider,
+ public MinecraftHelp(@Nonnull final String commandPrefix,
+ @Nonnull final AudienceProvider audienceProvider,
@Nonnull final CommandManager commandManager) {
+ this.commandPrefix = commandPrefix;
this.audienceProvider = audienceProvider;
this.commandManager = commandManager;
/* Default messages */
@@ -81,11 +85,13 @@ public final class MinecraftHelp {
this.messageMap.put(MESSAGE_QUERY_QUERY, "Showing search results for query: \"/\"");
this.messageMap.put(MESSAGE_QUERY_AVAILABLE_COMMANDS, "└─ Available Commands:");
this.messageMap.put(MESSAGE_QUERY_COMMAND_SYNTAX, " ├─ "
- + "\">/");
+ + "\">/");
this.messageMap.put(MESSAGE_QUERY_COMMAND_SYNTAX_LAST, " └─ "
- + "\">/");
+ + "\">/");
this.messageMap.put(MESSAGE_QUERY_LONGEST_PATH, "└─ /");
- this.messageMap.put(MESSAGE_QUERY_SUGGESTION, " ");
+ this.messageMap.put(MESSAGE_QUERY_SUGGESTION, " >Click to show help for this command\">"
+ + "");
this.messageMap.put(MESSAGE_QUERY_VERBOSE_SYNTAX, "└─ Command:"
+ " /");
this.messageMap.put(MESSAGE_QUERY_VERBOSE_DESCRIPTION, " ├─"
@@ -175,15 +181,24 @@ public final class MinecraftHelp {
final Iterator> iterator = helpTopic.getEntries().iterator();
while (iterator.hasNext()) {
final CommandHelpHandler.VerboseHelpEntry entry = iterator.next();
- if (iterator.hasNext()) {
- audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_QUERY_COMMAND_SYNTAX),
- Template.of("command", entry.getSyntaxString()),
- Template.of("description", entry.getDescription())));
- } else {
- audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_QUERY_COMMAND_SYNTAX_LAST),
- Template.of("command", entry.getSyntaxString()),
- Template.of("description", entry.getDescription())));
- }
+
+ final String description = entry.getDescription().isEmpty() ? "Click to show help for this command"
+ : entry.getDescription();
+
+ String message = this.messageMap.get(iterator.hasNext() ? MESSAGE_QUERY_COMMAND_SYNTAX
+ : MESSAGE_QUERY_COMMAND_SYNTAX_LAST);
+
+ final String suggestedCommand = entry.getSyntaxString()
+ .replace("<", "")
+ .replace(">", "")
+ .replace("[", "")
+ .replace("]", "");
+
+ message = message.replace("", entry.getSyntaxString())
+ .replace("", description)
+ .replace("cmdprefix", this.commandPrefix + ' ' + suggestedCommand);
+
+ audience.sendMessage(this.miniMessage.parse(message));
}
}
@@ -208,10 +223,16 @@ public final class MinecraftHelp {
prefix = "└─";
}
+ final String suggestedCommand = suggestion.replace("<", "")
+ .replace(">", "")
+ .replace("[", "")
+ .replace("]", "");
+
audience.sendMessage(this.miniMessage.parse(this.messageMap.get(MESSAGE_QUERY_SUGGESTION),
Template.of("indentation", indentation.toString()),
Template.of("prefix", prefix),
- Template.of("suggestion", suggestion)));
+ Template.of("suggestion", suggestion),
+ Template.of("cmdprefix", this.commandPrefix + ' ' + suggestedCommand)));
}
}