aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/shortcut
diff options
context:
space:
mode:
authorolim88 <bobq4582@gmail.com>2024-07-10 09:29:34 +0100
committerGitHub <noreply@github.com>2024-07-10 04:29:34 -0400
commitd3ca54c64fffc34fa0f100a2f51dbe5314b7b3e1 (patch)
tree971bee76ffa702488ce71f95e1c68e98b54fb7a9 /src/main/java/de/hysky/skyblocker/skyblock/shortcut
parent94abbb2b9d23238cd629d065aaf68fadf7fd7796 (diff)
downloadSkyblocker-d3ca54c64fffc34fa0f100a2f51dbe5314b7b3e1.tar.gz
Skyblocker-d3ca54c64fffc34fa0f100a2f51dbe5314b7b3e1.tar.bz2
Skyblocker-d3ca54c64fffc34fa0f100a2f51dbe5314b7b3e1.zip
make it so that shortcuts with command arguments can be redirected so suggestions still work where avalible (#824)
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/shortcut')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java b/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java
index 21d66805..dfde789e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java
@@ -5,6 +5,7 @@ import com.google.gson.reflect.TypeToken;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.StringArgumentType;
+import com.mojang.brigadier.tree.CommandNode;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
@@ -156,9 +157,21 @@ public class Shortcuts {
dispatcher.register(literal(key.substring(1)));
}
}
- for (String key : commandArgs.keySet()) {
- if (key.startsWith("/")) {
- dispatcher.register(literal(key.substring(1)).then(argument("args", StringArgumentType.greedyString())));
+ for (Map.Entry<String, String> set : commandArgs.entrySet()) {
+ if (set.getKey().startsWith("/")) {
+ CommandNode<FabricClientCommandSource> redirectLocation = dispatcher.getRoot();
+ for (String word : set.getValue().substring(1).split(" ")) {
+ redirectLocation = redirectLocation.getChild(word);
+ if (redirectLocation == null) {
+ break;
+ }
+ }
+ if (redirectLocation == null) {
+ dispatcher.register(literal(set.getKey().substring(1)).then(argument("args", StringArgumentType.greedyString())));
+ }
+ else {
+ dispatcher.register(literal(set.getKey().substring(1)).redirect(redirectLocation));
+ }
}
}
dispatcher.register(literal(SkyblockerMod.NAMESPACE).then(literal("help").executes(context -> {