mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-14 06:14:45 +01:00
Improve server console so input does not clip through output
This commit is contained in:
@@ -23,7 +23,8 @@ import emu.lunarcore.util.JsonUtils;
|
||||
import lombok.Getter;
|
||||
|
||||
public class LunarCore {
|
||||
private static Logger log = (Logger) LoggerFactory.getLogger(LunarCore.class);
|
||||
private static final Logger log = (Logger) LoggerFactory.getLogger(LunarCore.class);
|
||||
private static LineReaderImpl reader;
|
||||
private static File configFile = new File("./config.json");
|
||||
private static Config config;
|
||||
|
||||
@@ -34,17 +35,26 @@ public class LunarCore {
|
||||
@Getter private static GameServer gameServer;
|
||||
|
||||
@Getter private static CommandManager commandManager;
|
||||
@Getter private static ServerType serverType = ServerType.BOTH;
|
||||
|
||||
private static ServerType serverType = ServerType.BOTH;
|
||||
|
||||
// Load config first before doing anything
|
||||
static {
|
||||
// Setup console reader
|
||||
try {
|
||||
reader = (LineReaderImpl) LineReaderBuilder.builder()
|
||||
.terminal(TerminalBuilder.builder().dumb(true).build())
|
||||
.build();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Load config
|
||||
LunarCore.loadConfig();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Start Server
|
||||
LunarCore.getLogger().info("Starting Lunar Core...");
|
||||
LunarCore.getLogger().info("Made for game version " + GameConstants.VERSION);
|
||||
boolean generateHandbook = true;
|
||||
|
||||
// Load commands
|
||||
@@ -109,6 +119,10 @@ public class LunarCore {
|
||||
public static Logger getLogger() {
|
||||
return log;
|
||||
}
|
||||
|
||||
public static LineReaderImpl getLineReader() {
|
||||
return reader;
|
||||
}
|
||||
|
||||
// Database
|
||||
|
||||
@@ -154,10 +168,6 @@ public class LunarCore {
|
||||
|
||||
private static void startConsole() {
|
||||
try {
|
||||
LineReaderImpl reader = (LineReaderImpl) LineReaderBuilder.builder()
|
||||
.terminal(TerminalBuilder.terminal())
|
||||
.build();
|
||||
|
||||
while (true) {
|
||||
String input = reader.readLine("> ");
|
||||
if (input == null || input.length() == 0) {
|
||||
|
||||
@@ -48,6 +48,7 @@ public class ResourceLoader {
|
||||
|
||||
// Done
|
||||
loaded = true;
|
||||
LunarCore.getLogger().info("Resource loading complete");
|
||||
}
|
||||
|
||||
private static List<Class<?>> getResourceDefClasses() {
|
||||
@@ -166,6 +167,9 @@ public class ResourceLoader {
|
||||
|
||||
// Might be better to cache
|
||||
private static void loadFloorInfos() {
|
||||
//
|
||||
LunarCore.getLogger().info("Loading floor infos... this may take a while.");
|
||||
|
||||
// Load floor infos
|
||||
File floorDir = new File(LunarCore.getConfig().getResourceDir() + "/Config/LevelOutput/Floor/");
|
||||
|
||||
@@ -209,7 +213,7 @@ public class ResourceLoader {
|
||||
}
|
||||
|
||||
// Done
|
||||
LunarCore.getLogger().info("Loaded " + GameData.getFloorInfos().size() + " FloorInfos.");
|
||||
LunarCore.getLogger().info("Loaded " + GameData.getFloorInfos().size() + " floor infos.");
|
||||
}
|
||||
|
||||
// Might be better to cache
|
||||
@@ -249,8 +253,5 @@ public class ResourceLoader {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// Done
|
||||
LunarCore.getLogger().info("Loaded rogue maps");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,11 +30,11 @@ import emu.lunarcore.LunarCore.ServerType;
|
||||
public final class DatabaseManager {
|
||||
private MongoServer server;
|
||||
private Datastore datastore;
|
||||
private DeleteOptions DELETE_MANY = new DeleteOptions().multi(true);
|
||||
|
||||
private final DeleteOptions DELETE_MANY = new DeleteOptions().multi(true);
|
||||
|
||||
public DatabaseManager() {
|
||||
|
||||
}
|
||||
// Empty constructor for when we want to start an internal server
|
||||
public DatabaseManager() {}
|
||||
|
||||
public DatabaseManager(DatabaseInfo info, ServerType type) {
|
||||
// Variables
|
||||
|
||||
@@ -169,7 +169,7 @@ public class GameSession {
|
||||
|
||||
public void logPacket(String sendOrRecv, int opcode, byte[] payload) {
|
||||
LunarCore.getLogger().info(sendOrRecv + ": " + CmdIdUtils.getOpcodeName(opcode) + " (" + opcode + ")");
|
||||
System.out.println(Utils.bytesToHex(payload));
|
||||
LunarCore.getLineReader().printAbove(Utils.bytesToHex(payload));
|
||||
}
|
||||
|
||||
public void close() {
|
||||
|
||||
31
src/main/java/emu/lunarcore/util/LunarConsoleAppender.java
Normal file
31
src/main/java/emu/lunarcore/util/LunarConsoleAppender.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package emu.lunarcore.util;
|
||||
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
import ch.qos.logback.core.AppenderBase;
|
||||
import ch.qos.logback.classic.PatternLayout;
|
||||
|
||||
import emu.lunarcore.LunarCore;
|
||||
|
||||
public class LunarConsoleAppender extends AppenderBase<ILoggingEvent> {
|
||||
protected PatternLayout layout;
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
this.layout = new PatternLayout();
|
||||
this.layout.setContext(context);
|
||||
this.layout.setPattern("[%d{HH:mm:ss}] [%level] %msg%n");
|
||||
this.layout.start();
|
||||
super.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
super.stop();
|
||||
this.layout.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void append(ILoggingEvent event) {
|
||||
LunarCore.getLineReader().printAbove(layout.doLayout(event));
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
<Configuration>
|
||||
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>[%d{HH:mm:ss}] [%level] %msg%n</pattern>
|
||||
</encoder>
|
||||
<appender name="CONSOLE" class="emu.lunarcore.util.LunarConsoleAppender">
|
||||
</appender>
|
||||
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
@@ -22,7 +19,7 @@
|
||||
<logger name="de.bwaldvogel" level="ERROR" />
|
||||
<logger name="io.javalin" level="ERROR" />
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
<appender-ref ref="CONSOLE" />
|
||||
<appender-ref ref="FILE" />
|
||||
</root>
|
||||
</Configuration>
|
||||
Reference in New Issue
Block a user