From fbed6f2be38dcaedfec8270e6acc5acc528d00df Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 26 Nov 2017 23:21:15 -0500 Subject: [PATCH] Add Support for Async Tab Completions for Paper Servers This adds the ability for plugins to define completion handlers as async safe (not on games main thread) When they are defined async safe, and ran on a Paper 1.12.2+ server, with a Paper ACF manager, completions will be handled mostly async, letting you safely do heavier operations in tab completions. --- .idea/codeStyles/Project.xml | 3 + .../commands/BukkitCommandCompletions.java | 6 +- .../aikar/commands/BukkitCommandIssuer.java | 1 - .../commands/BukkitRegisteredCommand.java | 1 - .../co/aikar/commands/BukkitRootCommand.java | 18 ++-- .../commands/BungeeCommandCompletions.java | 2 +- .../aikar/commands/BungeeCommandIssuer.java | 1 - .../aikar/commands/BungeeCommandManager.java | 2 +- .../co/aikar/commands/BungeeRootCommand.java | 17 ++-- .../java/co/aikar/commands/ACFPatterns.java | 1 - .../main/java/co/aikar/commands/ACFUtil.java | 1 - .../java/co/aikar/commands/BaseCommand.java | 90 ++++++++++++------ .../commands/CommandCompletionContext.java | 4 + .../co/aikar/commands/CommandCompletions.java | 23 +++-- .../commands/CommandExecutionContext.java | 1 + .../java/co/aikar/commands/CommandHelp.java | 7 +- .../co/aikar/commands/CommandManager.java | 20 ++-- .../commands/CommandOperationContext.java | 8 +- .../co/aikar/commands/MessageFormatter.java | 5 +- .../co/aikar/commands/RegisteredCommand.java | 12 ++- .../java/co/aikar/commands/RootCommand.java | 22 ++++- .../java/co/aikar/acfexample/ACFExample.java | 2 +- paper/pom.xml | 2 +- .../PaperAsyncTabCompleteHandler.java | 93 +++++++++++++++++++ .../aikar/commands/PaperCommandManager.java | 7 +- .../java/co/aikar/commands/ACFSpongeUtil.java | 1 - .../aikar/commands/SpongeCommandContexts.java | 2 - .../aikar/commands/SpongeCommandIssuer.java | 2 - .../aikar/commands/SpongeCommandManager.java | 5 +- .../SpongeCommandOperationContext.java | 4 +- .../co/aikar/commands/SpongeRootCommand.java | 18 ++-- 31 files changed, 278 insertions(+), 103 deletions(-) create mode 100644 paper/src/main/java/co/aikar/commands/PaperAsyncTabCompleteHandler.java diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 31439cbb..d93c4704 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -7,6 +7,9 @@