From b6168b7ccc84602dc5fd108ccb74d42c3ecf8d17 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:25:42 -0700 Subject: [PATCH] Get console Brig suggestions from main thread fixes #13027 (#13028) --- .../papermc/paper/console/BrigadierCommandCompleter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/console/BrigadierCommandCompleter.java b/paper-server/src/main/java/io/papermc/paper/console/BrigadierCommandCompleter.java index bf7b9518c..c2174c8ae 100644 --- a/paper-server/src/main/java/io/papermc/paper/console/BrigadierCommandCompleter.java +++ b/paper-server/src/main/java/io/papermc/paper/console/BrigadierCommandCompleter.java @@ -8,9 +8,10 @@ import com.mojang.brigadier.ParseResults; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.suggestion.Suggestion; import io.papermc.paper.adventure.PaperAdventure; -import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; import java.util.function.Supplier; import net.kyori.adventure.text.Component; import net.minecraft.commands.CommandSourceStack; @@ -45,7 +46,10 @@ public final class BrigadierCommandCompleter { final ParseResults results = dispatcher.parse(new StringReader(line.line()), this.commandSourceStack.get()); this.addCandidates( candidates, - dispatcher.getCompletionSuggestions(results, line.cursor()).join().getList(), + CompletableFuture.supplyAsync(() -> dispatcher.getCompletionSuggestions(results, line.cursor()), this.server::scheduleOnMain) + .thenCompose(Function.identity()) + .join() + .getList(), existing, new ParseContext(line.line(), results.getContext().findSuggestionContext(line.cursor()).startPos) );