From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: stonar96 Date: Sun, 12 Sep 2021 00:14:21 +0200 Subject: [PATCH] Check requirement before suggesting root nodes Child nodes are handled by CommandDispatcher#parse checking requirements. Vanilla clients only send ServerboundCommandSuggestionPacket when encountering a command node with ASK_SERVER suggestions, however a modified client can send this packet whenever it wants. diff --git a/src/main/java/com/mojang/brigadier/CommandDispatcher.java b/src/main/java/com/mojang/brigadier/CommandDispatcher.java index ca24830bac1a04b798229d1946863429c7849495..5584040fe48c18aa809f5a1510157e735851df79 100644 --- a/src/main/java/com/mojang/brigadier/CommandDispatcher.java +++ b/src/main/java/com/mojang/brigadier/CommandDispatcher.java @@ -594,10 +594,14 @@ public class CommandDispatcher { int i = 0; for (final CommandNode node : parent.getChildren()) { CompletableFuture future = Suggestions.empty(); + // Paper start - Don't suggest if the requirement isn't met + if (parent != this.root || node.canUse(context.getSource())) { try { future = node.listSuggestions(context.build(truncatedInput), new SuggestionsBuilder(truncatedInput, truncatedInputLowerCase, start)); } catch (final CommandSyntaxException ignored) { } + } + // Paper end futures[i++] = future; }