mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-13 13:54:37 +01:00
Replace console with a jline implementation
This commit is contained in:
@@ -79,6 +79,9 @@ dependencies {
|
||||
implementation group: 'de.bwaldvogel', name: 'mongo-java-server', version: '1.44.0'
|
||||
implementation group: 'de.bwaldvogel', name: 'mongo-java-server-h2-backend', version: '1.44.0'
|
||||
|
||||
implementation group: 'org.jline', name: 'jline', version: '3.23.0'
|
||||
implementation group: 'org.jline', name: 'jline-terminal-jansi', version: '3.23.0'
|
||||
|
||||
protobuf files('proto/')
|
||||
|
||||
compileOnly 'org.projectlombok:lombok:1.18.30'
|
||||
|
||||
@@ -2,6 +2,11 @@ package emu.lunarcore;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
import org.jline.reader.EndOfFileException;
|
||||
import org.jline.reader.LineReaderBuilder;
|
||||
import org.jline.reader.UserInterruptException;
|
||||
import org.jline.reader.impl.LineReaderImpl;
|
||||
import org.jline.terminal.TerminalBuilder;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
@@ -146,15 +151,26 @@ public class LunarRail {
|
||||
}
|
||||
|
||||
// Server console
|
||||
|
||||
|
||||
private static void startConsole() {
|
||||
String input;
|
||||
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
|
||||
while ((input = br.readLine()) != null) {
|
||||
try {
|
||||
LineReaderImpl reader = (LineReaderImpl) LineReaderBuilder.builder()
|
||||
.terminal(TerminalBuilder.terminal())
|
||||
.build();
|
||||
|
||||
while (true) {
|
||||
String input = reader.readLine("> ");
|
||||
if (input == null || input.length() == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
LunarRail.getCommandManager().invoke(null, input);
|
||||
}
|
||||
}
|
||||
} catch (UserInterruptException | EndOfFileException e) {
|
||||
// CTRL + C / CTRL + D
|
||||
System.exit(0);
|
||||
} catch (Exception e) {
|
||||
LunarRail.getLogger().error("Console error:", e);
|
||||
LunarRail.getLogger().error("Terminal error: ", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,10 +11,9 @@ import emu.lunarcore.LunarRail;
|
||||
import emu.lunarcore.game.player.Player;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter(AccessLevel.PRIVATE)
|
||||
@Getter
|
||||
public class CommandManager {
|
||||
private Object2ObjectMap<String, CommandHandler> labels;
|
||||
private Object2ObjectMap<String, CommandHandler> commands;
|
||||
|
||||
Reference in New Issue
Block a user