Add TerminalConsoleAppender for console prompts

This commit is contained in:
Minecrell
2018-08-07 16:24:01 +02:00
parent a7a227ed05
commit a044ed72de
6 changed files with 59 additions and 11 deletions

View File

@@ -1,12 +1,13 @@
package com.velocitypowered.proxy;
import com.velocitypowered.proxy.console.VelocityConsole;
public class Velocity {
public static void main(String... args) throws InterruptedException {
public static void main(String... args) {
final VelocityServer server = VelocityServer.getServer();
server.start();
Runtime.getRuntime().addShutdownHook(new Thread(server::shutdown, "Shutdown thread"));
Thread.currentThread().join();
new VelocityConsole(server).start();
}
}

View File

@@ -56,8 +56,7 @@ public class VelocityServer implements ProxyServer {
private final CommandInvoker consoleCommandInvoker = new CommandInvoker() {
@Override
public void sendMessage(@Nonnull Component component) {
// TODO: TerminalConsoleAppender
logger.info(ComponentSerializers.PLAIN.serialize(component));
logger.info(ComponentSerializers.LEGACY.serialize(component));
}
@Override

View File

@@ -0,0 +1,39 @@
package com.velocitypowered.proxy.console;
import com.velocitypowered.proxy.VelocityServer;
import net.minecrell.terminalconsole.SimpleTerminalConsole;
import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
public final class VelocityConsole extends SimpleTerminalConsole {
private final VelocityServer server;
public VelocityConsole(VelocityServer server) {
this.server = server;
}
@Override
protected LineReader buildReader(LineReaderBuilder builder) {
return super.buildReader(builder
.appName("Velocity")
// TODO: Command completion
);
}
@Override
protected boolean isRunning() {
return !this.server.isShutdown();
}
@Override
protected void runCommand(String command) {
this.server.getCommandManager().execute(this.server.getConsoleCommandInvoker(), command);
}
@Override
protected void shutdown() {
this.server.shutdown();
}
}