diff options
author | olim88 <bobq4582@gmail.com> | 2024-07-10 09:29:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-10 04:29:34 -0400 |
commit | d3ca54c64fffc34fa0f100a2f51dbe5314b7b3e1 (patch) | |
tree | 971bee76ffa702488ce71f95e1c68e98b54fb7a9 /src/main/java/de/hysky/skyblocker/skyblock | |
parent | 94abbb2b9d23238cd629d065aaf68fadf7fd7796 (diff) | |
download | Skyblocker-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')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/shortcut/Shortcuts.java | 19 |
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 -> { |