Enhance console tab completions for brigadier commands

Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
This commit is contained in:
Jason Penilla
2021-03-30 16:06:08 -07:00
parent 85a8224261
commit a6eda6cb37
7 changed files with 340 additions and 19 deletions

View File

@@ -1,5 +1,8 @@
package com.destroystokyo.paper.console;
import io.papermc.paper.configuration.GlobalConfiguration;
import io.papermc.paper.console.BrigadierCompletionMatcher;
import io.papermc.paper.console.BrigadierConsoleParser;
import net.minecraft.server.dedicated.DedicatedServer;
import net.minecrell.terminalconsole.SimpleTerminalConsole;
import org.bukkit.craftbukkit.command.ConsoleCommandCompleter;
@@ -16,11 +19,20 @@ public final class PaperConsole extends SimpleTerminalConsole {
@Override
protected LineReader buildReader(LineReaderBuilder builder) {
return super.buildReader(builder
builder
.appName("Paper")
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
.completer(new ConsoleCommandCompleter(this.server))
);
.option(LineReader.Option.COMPLETE_IN_WORD, true);
if (io.papermc.paper.configuration.GlobalConfiguration.get().console.enableBrigadierHighlighting) {
builder.highlighter(new io.papermc.paper.console.BrigadierCommandHighlighter(this.server));
}
if (GlobalConfiguration.get().console.enableBrigadierCompletions) {
System.setProperty("org.jline.reader.support.parsedline", "true"); // to hide a warning message about the parser not supporting
builder.parser(new BrigadierConsoleParser(this.server));
builder.completionMatcher(new BrigadierCompletionMatcher());
}
return super.buildReader(builder);
}
@Override