diff options
Diffstat (limited to 'src/main/java/de')
-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 -> { |