Files
DeltaZern/paper-server/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
T
Minecrell 36723cdd60 Use TerminalConsoleAppender for console improvements
Rewrite console improvements (console colors, tab completion,
persistent input line, ...) using JLine 3.x and TerminalConsoleAppender.

Also uses the new ANSIComponentSerializer to serialize components when
logging them via the ComponentLogger, or when sending messages to the
console, for hex color support.

New features:
  - Support console colors for Vanilla commands
  - Add console colors for warnings and errors
  - Server can now be turned off safely using CTRL + C. JLine catches
    the signal and the implementation shuts down the server cleanly.
  - Support console colors and persistent input line when running in
    IntelliJ IDEA

Other changes:
  - Server starts 1-2 seconds faster thanks to optimizations in Log4j
    configuration

Co-Authored-By: Emilia Kond <emilia@rymiel.space>
2017-06-09 19:03:43 +02:00

42 lines
1.2 KiB
Java

package com.destroystokyo.paper.console;
import net.minecraft.server.dedicated.DedicatedServer;
import net.minecrell.terminalconsole.SimpleTerminalConsole;
import org.bukkit.craftbukkit.command.ConsoleCommandCompleter;
import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
public final class PaperConsole extends SimpleTerminalConsole {
private final DedicatedServer server;
public PaperConsole(DedicatedServer server) {
this.server = server;
}
@Override
protected LineReader buildReader(LineReaderBuilder builder) {
return super.buildReader(builder
.appName("Paper")
.variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
.completer(new ConsoleCommandCompleter(this.server))
);
}
@Override
protected boolean isRunning() {
return !this.server.isStopped() && this.server.isRunning();
}
@Override
protected void runCommand(String command) {
this.server.handleConsoleInput(command, this.server.createCommandSourceStack());
}
@Override
protected void shutdown() {
this.server.halt(false);
}
}