diff --git a/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt b/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt index dbf5258ea..774f8f022 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/CommandLineArguments.kt @@ -13,14 +13,17 @@ package de.bixilon.minosoft.terminal +import de.bixilon.kutil.shutdown.AbstractShutdownReason +import de.bixilon.kutil.shutdown.ShutdownManager import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.KUtil.toResourceLocation +import de.bixilon.minosoft.util.logging.Log import net.sourceforge.argparse4j.ArgumentParsers import net.sourceforge.argparse4j.impl.Arguments import net.sourceforge.argparse4j.inf.ArgumentParserException import net.sourceforge.argparse4j.inf.Namespace -import kotlin.system.exitProcess +import java.io.PrintWriter object CommandLineArguments { lateinit var ARGUMENTS: List @@ -92,8 +95,8 @@ object CommandLineArguments { try { namespace = PARSER.parseArgs(args) } catch (exception: ArgumentParserException) { - PARSER.handleError(exception) - exitProcess(1) + PARSER.handleError(exception, PrintWriter(Log.FATAL_PRINT_STREAM)) + return ShutdownManager.shutdown(reason = AbstractShutdownReason.CRASH) } RunConfiguration.LOG_COLOR_MESSAGE = namespace.getBoolean("disable_log_color_message") diff --git a/src/main/java/de/bixilon/minosoft/util/logging/Log.kt b/src/main/java/de/bixilon/minosoft/util/logging/Log.kt index c184ec56f..6d3a16b40 100644 --- a/src/main/java/de/bixilon/minosoft/util/logging/Log.kt +++ b/src/main/java/de/bixilon/minosoft/util/logging/Log.kt @@ -80,7 +80,7 @@ object Log { messageToSend.message.setFallbackColor(messageColor) } - val stream = if (messageToSend.logMessageType.error) { + val stream = if (messageToSend.level.error) { SYSTEM_ERR_STREAM } else { SYSTEM_OUT_STREAM diff --git a/src/main/java/de/bixilon/minosoft/util/logging/LogLevels.kt b/src/main/java/de/bixilon/minosoft/util/logging/LogLevels.kt index c3462ec1e..fdac061af 100644 --- a/src/main/java/de/bixilon/minosoft/util/logging/LogLevels.kt +++ b/src/main/java/de/bixilon/minosoft/util/logging/LogLevels.kt @@ -17,9 +17,9 @@ import de.bixilon.minosoft.data.text.formatting.color.ChatColors import de.bixilon.minosoft.data.text.formatting.color.Colors import de.bixilon.minosoft.data.text.formatting.color.RGBColor -enum class LogLevels(val levelColors: RGBColor) { - FATAL(Colors.DARK_RED), - WARN(ChatColors.RED), +enum class LogLevels(val levelColors: RGBColor, val error: Boolean = false) { + FATAL(Colors.DARK_RED, true), + WARN(ChatColors.RED, true), INFO(ChatColors.WHITE), VERBOSE(ChatColors.YELLOW), ; diff --git a/src/main/java/de/bixilon/minosoft/util/logging/LogMessageType.kt b/src/main/java/de/bixilon/minosoft/util/logging/LogMessageType.kt index d59d40d50..e2630ba36 100644 --- a/src/main/java/de/bixilon/minosoft/util/logging/LogMessageType.kt +++ b/src/main/java/de/bixilon/minosoft/util/logging/LogMessageType.kt @@ -21,7 +21,6 @@ enum class LogMessageType( val defaultColor: RGBColor, val colorMap: Map = emptyMap(), val defaultLevel: LogLevels = LogLevels.INFO, - val error: Boolean = false, ) { AUTO_CONNECT(ChatColors.WHITE), GENERAL(ChatColors.WHITE), diff --git a/src/main/java/de/bixilon/minosoft/util/logging/LogPrintStream.kt b/src/main/java/de/bixilon/minosoft/util/logging/LogPrintStream.kt index b5b171b24..11fd864dd 100644 --- a/src/main/java/de/bixilon/minosoft/util/logging/LogPrintStream.kt +++ b/src/main/java/de/bixilon/minosoft/util/logging/LogPrintStream.kt @@ -34,4 +34,8 @@ class LogPrintStream( } Log.log(message = string, type = type, level = level) } + + override fun write(buf: ByteArray, off: Int, len: Int) { + print(String(buf).substring(off, len)) // ToDo: Optimize + } }