From 04edd7498848f9e4aff6ff3e3f4953705b39c217 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sat, 4 Nov 2023 19:14:26 +0100 Subject: [PATCH] bump, adopt kutil 1.24 --- gradle.properties | 2 +- src/main/java/de/bixilon/minosoft/Minosoft.kt | 8 ++-- .../minosoft/data/entities/entities/Entity.kt | 3 +- .../item/items/pixlyzer/PixLyzerFoodItem.kt | 2 +- .../main/play/server/ServerListController.kt | 2 +- .../gui/eros/util/JavaFXInitializer.kt | 2 +- .../entities/feature/hitbox/HitboxFeature.kt | 2 +- .../entities/renderer/EntityRenderer.kt | 2 +- .../rendering/entities/util/EntitySpeed.kt | 2 +- .../texture/simple/cloud/CloudParticle.kt | 2 +- .../minosoft/physics/EntityPositionInfo.kt | 8 ++-- .../network/connection/play/PlayConnection.kt | 1 - .../protocol/versions/VersionLoader.kt | 2 +- .../de/bixilon/minosoft/terminal/cli/CLI.kt | 6 +-- .../java/de/bixilon/minosoft/util/KUtil.kt | 8 ---- .../floats/FragmentedArrayFloatList.kt | 33 +++++++++++-- .../util/interpolate/InterpolateFunction.kt | 20 -------- .../minosoft/util/interpolate/Interpolator.kt | 48 ------------------- .../de/bixilon/minosoft/util/logging/Log.kt | 5 +- 19 files changed, 54 insertions(+), 104 deletions(-) delete mode 100644 src/main/java/de/bixilon/minosoft/util/interpolate/InterpolateFunction.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/interpolate/Interpolator.kt diff --git a/gradle.properties b/gradle.properties index a8feaf5e9..2f372ac12 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,5 +17,5 @@ lwjgl.version=3.3.3 ikonli.version=12.3.1 netty.version=4.1.100.Final jackson.version=2.15.3 -kutil.version=1.23.2 +kutil.version=1.24.0 glm.version=0.9.9.1-12 diff --git a/src/main/java/de/bixilon/minosoft/Minosoft.kt b/src/main/java/de/bixilon/minosoft/Minosoft.kt index b2da16594..391b0ba3d 100644 --- a/src/main/java/de/bixilon/minosoft/Minosoft.kt +++ b/src/main/java/de/bixilon/minosoft/Minosoft.kt @@ -100,9 +100,9 @@ object Minosoft { private fun boot() { val taskWorker = TaskWorker(errorHandler = { _, error -> error.printStackTrace(); error.crash() }) - taskWorker += WorkerTask(identifier = BootTasks.PROFILES, priority = ThreadPool.HIGHER, executor = GlobalProfileManager::initialize) taskWorker += WorkerTask(identifier = BootTasks.VERSIONS, priority = ThreadPool.HIGHER, executor = VersionLoader::load) - taskWorker += WorkerTask(identifier = BootTasks.FILE_WATCHER, priority = ThreadPool.HIGH, optional = true, executor = this::startFileWatcherService) + taskWorker += WorkerTask(identifier = BootTasks.FILE_WATCHER, priority = ThreadPool.HIGHER, optional = true, executor = this::startFileWatcherService) + taskWorker += WorkerTask(identifier = BootTasks.PROFILES, priority = ThreadPool.HIGHER, dependencies = arrayOf(BootTasks.FILE_WATCHER), executor = GlobalProfileManager::initialize) taskWorker += WorkerTask(identifier = BootTasks.LANGUAGE_FILES, dependencies = arrayOf(BootTasks.PROFILES), executor = this::loadLanguageFiles) taskWorker += WorkerTask(identifier = BootTasks.ASSETS_PROPERTIES, dependencies = arrayOf(BootTasks.VERSIONS), executor = AssetsVersionProperties::load) @@ -171,13 +171,13 @@ object Minosoft { postBoot() } - private fun startFileWatcherService(latch: AbstractLatch) { + private fun startFileWatcherService(latch: AbstractLatch?) { Log.log(LogMessageType.GENERAL, LogLevels.VERBOSE) { "Starting file watcher service..." } FileWatcherService.start() Log.log(LogMessageType.GENERAL, LogLevels.VERBOSE) { "File watcher service started!" } } - private fun loadLanguageFiles(latch: AbstractLatch) { + private fun loadLanguageFiles(latch: AbstractLatch?) { val language = ErosProfileManager.selected.general.language ErosProfileManager.selected.general::language.observe(this, true) { Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Loading language files (${language})" } diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt index cc5503d54..c52d3963d 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt @@ -237,7 +237,7 @@ abstract class Entity( override fun init() { - Entity::class.java.getDeclaredField("physics").forceSet(this, createPhysics()) + PHYSICS.forceSet(this, createPhysics()) forceTeleport(initialPosition) forceRotate(initialRotation) if (!RunConfiguration.DISABLE_RENDERING) { @@ -252,6 +252,7 @@ abstract class Entity( companion object { private val renderInfo = Entity::renderInfo.javaField!!.apply { isAccessible = true } + private val PHYSICS = Entity::class.java.getDeclaredField("physics").apply { isAccessible = true } val FLAGS_DATA = EntityDataField("ENTITY_FLAGS") val AIR_SUPPLY_DATA = EntityDataField("ENTITY_AIR_SUPPLY") diff --git a/src/main/java/de/bixilon/minosoft/data/registries/item/items/pixlyzer/PixLyzerFoodItem.kt b/src/main/java/de/bixilon/minosoft/data/registries/item/items/pixlyzer/PixLyzerFoodItem.kt index 7dbfb661b..f708366ed 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/item/items/pixlyzer/PixLyzerFoodItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/item/items/pixlyzer/PixLyzerFoodItem.kt @@ -23,7 +23,7 @@ import de.bixilon.minosoft.data.registries.item.factory.PixLyzerItemFactory import de.bixilon.minosoft.data.registries.item.items.food.FoodItem import de.bixilon.minosoft.data.registries.registries.Registries -open class PixLyzerFoodItem( +class PixLyzerFoodItem( resourceLocation: ResourceLocation, registries: Registries, data: Map, diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt index 95a4ea219..d4b2a9619 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt @@ -232,7 +232,7 @@ class ServerListController : EmbeddedJavaFXController(), Refreshable { private fun updateServer(server: AbstractServer, refreshInfo: Boolean = false) { val serverType = serverType ?: return - if (server !in serverType.servers) { // <- initial server not added (fixed in kutil 1.24) + if (server !in serverType.servers) { return } val card = ServerCard.CARDS[server] ?: ServerCard(server).apply { diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/util/JavaFXInitializer.kt b/src/main/java/de/bixilon/minosoft/gui/eros/util/JavaFXInitializer.kt index 3153db715..7869d9a01 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/util/JavaFXInitializer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/util/JavaFXInitializer.kt @@ -40,7 +40,7 @@ class JavaFXInitializer internal constructor() : Application() { JavaFXUtil.HOST_SERVICES = hostServices DesktopUtil.initialize() - val worker = UnconditionalWorker() + val worker = UnconditionalWorker(autoWork = true) worker += { JavaFXUtil.MINOSOFT_LOGO = Image(Minosoft.MINOSOFT_ASSETS_MANAGER[DesktopUtil.ICON]) } worker += { catchAll { JavaFXUtil.BIXILON_LOGO = SvgLoader().loadSvg(Minosoft.MINOSOFT_ASSETS_MANAGER["minosoft:textures/icons/bixilon_logo.svg".toResourceLocation()]) } } worker.work(LATCH) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/feature/hitbox/HitboxFeature.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/feature/hitbox/HitboxFeature.kt index 6f1510f46..20513e9c5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/feature/hitbox/HitboxFeature.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/feature/hitbox/HitboxFeature.kt @@ -15,6 +15,7 @@ package de.bixilon.minosoft.gui.rendering.entities.feature.hitbox import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec3.Vec3i +import de.bixilon.kutil.math.interpolation.Interpolator import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.registries.shapes.aabb.AABB import de.bixilon.minosoft.data.text.formatting.color.ChatColors @@ -27,7 +28,6 @@ import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition -import de.bixilon.minosoft.util.interpolate.Interpolator class HitboxFeature(renderer: EntityRenderer<*>) : EntityRenderFeature(renderer) { private val manager = renderer.renderer.features.hitbox diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt index 459c0c734..be01c4459 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/renderer/EntityRenderer.kt @@ -15,6 +15,7 @@ package de.bixilon.minosoft.gui.rendering.entities.renderer import de.bixilon.kotlinglm.mat4x4.Mat4 import de.bixilon.kotlinglm.vec3.Vec3 +import de.bixilon.kutil.math.interpolation.Interpolator import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.entities.event.events.damage.DamageEvent import de.bixilon.minosoft.data.entities.event.events.damage.DamageListener @@ -30,7 +31,6 @@ import de.bixilon.minosoft.gui.rendering.entities.feature.text.EntityNameFeature import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.reset import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.rotateRadAssign import de.bixilon.minosoft.gui.rendering.util.mat.mat4.Mat4Util.translateYAssign -import de.bixilon.minosoft.util.interpolate.Interpolator abstract class EntityRenderer( val renderer: EntitiesRenderer, diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/util/EntitySpeed.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/util/EntitySpeed.kt index 8052f28eb..826394477 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entities/util/EntitySpeed.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entities/util/EntitySpeed.kt @@ -15,10 +15,10 @@ package de.bixilon.minosoft.gui.rendering.entities.util import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.kutil.math.interpolation.FloatInterpolation +import de.bixilon.kutil.math.interpolation.Interpolator import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition -import de.bixilon.minosoft.util.interpolate.Interpolator class EntitySpeed(val entity: Entity) { private val interpolator = Interpolator(0.0f, FloatInterpolation::interpolateLinear) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt index 68c1251f8..911328425 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt @@ -46,7 +46,7 @@ open class CloudParticle(connection: PlayConnection, position: Vec3d, velocity: if (dead) { return } - if (DefaultThreadPool.isBacklog()) return // disable lagging a bit + if (DefaultThreadPool.isBacklogging()) return // disable lagging a bit connection.world.entities.getClosestInRadius(position, 2.0, WorldEntities.CHECK_CLOSEST_PLAYER)?.let { // TODO: optimize val y = it.physics.position.y diff --git a/src/main/java/de/bixilon/minosoft/physics/EntityPositionInfo.kt b/src/main/java/de/bixilon/minosoft/physics/EntityPositionInfo.kt index 622e2df1e..5682196f1 100644 --- a/src/main/java/de/bixilon/minosoft/physics/EntityPositionInfo.kt +++ b/src/main/java/de/bixilon/minosoft/physics/EntityPositionInfo.kt @@ -60,14 +60,16 @@ class EntityPositionInfo( val velocityPosition = Vec3i(blockPosition.x, (position.y - 0.5000001).toInt(), blockPosition.z) - val chunks = physics.entity.connection.world.chunks - val revision = chunks.revision + val world = physics.entity.connection.world + world.lock.acquire() + val revision = world.chunks.revision var chunk = if (previous.revision == revision) previous.chunk?.neighbours?.trace(chunkPosition - previous.chunkPosition) else null if (chunk == null) { - chunk = chunks[chunkPosition] + chunk = world.chunks.chunks.unsafe[chunkPosition] } + world.lock.release() val block = chunk?.get(inChunkPosition) val velocityBlock = chunk?.get(velocityPosition.inChunkPosition) diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt index 4c1cf425b..8669f17db 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt @@ -68,7 +68,6 @@ import de.bixilon.minosoft.terminal.RunConfiguration import de.bixilon.minosoft.terminal.cli.CLI import de.bixilon.minosoft.util.KUtil import de.bixilon.minosoft.util.KUtil.startInit -import de.bixilon.minosoft.util.KUtil.waitIfLess import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType diff --git a/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt b/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt index c0d58298e..b78a3e571 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt @@ -84,7 +84,7 @@ object VersionLoader { return version } - fun load(latch: AbstractLatch) { + fun load(latch: AbstractLatch?) { Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Loading versions..." } val index: VersionIndex = Minosoft.MINOSOFT_ASSETS_MANAGER[INDEX].readJson() diff --git a/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt b/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt index b247b1550..d6024760a 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/cli/CLI.kt @@ -55,9 +55,9 @@ object CLI { } - fun startThread(latch: AbstractLatch) { - latch.inc() - Thread({ latch.dec(); startLoop() }, "CLI").start() + fun startThread(latch: AbstractLatch?) { + latch?.inc() + Thread({ latch?.dec(); startLoop() }, "CLI").start() } private fun startLoop() { diff --git a/src/main/java/de/bixilon/minosoft/util/KUtil.kt b/src/main/java/de/bixilon/minosoft/util/KUtil.kt index 8f3eecaa3..6edb63e68 100644 --- a/src/main/java/de/bixilon/minosoft/util/KUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/KUtil.kt @@ -29,7 +29,6 @@ import de.bixilon.kutil.collections.CollectionUtil.toSynchronizedSet import de.bixilon.kutil.concurrent.pool.DefaultThreadPool import de.bixilon.kutil.concurrent.schedule.TaskScheduler import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.kutil.latch.AbstractLatch import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.kutil.primitive.DoubleUtil import de.bixilon.kutil.primitive.DoubleUtil.matches @@ -338,13 +337,6 @@ object KUtil { return table } - @Deprecated("kutil 1.24") - fun AbstractLatch.waitIfLess(value: Int, timeout: Long = 0L) = synchronized(notify) { - while (this.count < value) { - waitForChange(timeout) - } - } - @Deprecated("kutil 1.24") @JvmStatic inline fun > ValuesEnum.set(): EnumSet { diff --git a/src/main/java/de/bixilon/minosoft/util/collections/floats/FragmentedArrayFloatList.kt b/src/main/java/de/bixilon/minosoft/util/collections/floats/FragmentedArrayFloatList.kt index 72f4bb8ea..a0e7b9e5b 100644 --- a/src/main/java/de/bixilon/minosoft/util/collections/floats/FragmentedArrayFloatList.kt +++ b/src/main/java/de/bixilon/minosoft/util/collections/floats/FragmentedArrayFloatList.kt @@ -91,7 +91,7 @@ class FragmentedArrayFloatList( return this.incomplete.firstOrNull() ?: grow(left) } - fun add(value1: Float, value2: Float) { + override fun add(value1: Float, value2: Float) { var buffer = tryGrow(1) buffer = batchAdd(value1, buffer, 1) batchAdd(value2, buffer, 0) @@ -100,7 +100,7 @@ class FragmentedArrayFloatList( invalidateOutput() } - fun add(value1: Float, value2: Float, value3: Float) { + override fun add(value1: Float, value2: Float, value3: Float) { var buffer = tryGrow(1) buffer = batchAdd(value1, buffer, 2) buffer = batchAdd(value2, buffer, 1) @@ -110,7 +110,7 @@ class FragmentedArrayFloatList( invalidateOutput() } - fun add(value1: Float, value2: Float, value3: Float, value4: Float) { + override fun add(value1: Float, value2: Float, value3: Float, value4: Float) { var buffer = tryGrow(1) buffer = batchAdd(value1, buffer, 3) buffer = batchAdd(value2, buffer, 2) @@ -121,7 +121,32 @@ class FragmentedArrayFloatList( invalidateOutput() } - fun add(value1: Float, value2: Float, value3: Float, value4: Float, value5: Float, value6: Float, value7: Float) { + override fun add(value1: Float, value2: Float, value3: Float, value4: Float, value5: Float) { + var buffer = tryGrow(1) + buffer = batchAdd(value1, buffer, 4) + buffer = batchAdd(value2, buffer, 3) + buffer = batchAdd(value3, buffer, 2) + buffer = batchAdd(value4, buffer, 1) + batchAdd(value5, buffer, 0) + + size += 5 + invalidateOutput() + } + + override fun add(value1: Float, value2: Float, value3: Float, value4: Float, value5: Float, value6: Float) { + var buffer = tryGrow(1) + buffer = batchAdd(value1, buffer, 5) + buffer = batchAdd(value2, buffer, 4) + buffer = batchAdd(value3, buffer, 3) + buffer = batchAdd(value4, buffer, 2) + buffer = batchAdd(value5, buffer, 1) + batchAdd(value6, buffer, 0) + + size += 6 + invalidateOutput() + } + + override fun add(value1: Float, value2: Float, value3: Float, value4: Float, value5: Float, value6: Float, value7: Float) { var buffer = tryGrow(1) buffer = batchAdd(value1, buffer, 6) buffer = batchAdd(value2, buffer, 5) diff --git a/src/main/java/de/bixilon/minosoft/util/interpolate/InterpolateFunction.kt b/src/main/java/de/bixilon/minosoft/util/interpolate/InterpolateFunction.kt deleted file mode 100644 index 6c30fd480..000000000 --- a/src/main/java/de/bixilon/minosoft/util/interpolate/InterpolateFunction.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.interpolate - -@Deprecated("Kutil 1.24") -fun interface InterpolateFunction { - - fun interpolate(delta: Float, value0: T, value1: T): T -} diff --git a/src/main/java/de/bixilon/minosoft/util/interpolate/Interpolator.kt b/src/main/java/de/bixilon/minosoft/util/interpolate/Interpolator.kt deleted file mode 100644 index 451204876..000000000 --- a/src/main/java/de/bixilon/minosoft/util/interpolate/Interpolator.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.interpolate - -@Deprecated("Kutil 1.24") -class Interpolator( - var initial: T, - var function: InterpolateFunction, -) { - var value = initial - - var value0 = initial - var value1 = initial - var delta = 0.0f - var identical = false - - - fun push(value: T) { - value0 = value1 - value1 = value - this.identical = value0 == value1 - delta = 0.0f - this.value = value0 - } - - fun add(delta: Float) { - if (this.delta >= 1.0f) return - this.delta += delta - if (this.identical) return - - value = function.interpolate(this.delta, value0, value1) - } - - fun add(seconds: Float, step: Float) { - add(seconds / step) - } -} 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 a4bc110b7..d2e2e8a38 100644 --- a/src/main/java/de/bixilon/minosoft/util/logging/Log.kt +++ b/src/main/java/de/bixilon/minosoft/util/logging/Log.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.util.logging -import de.bixilon.kutil.ansi.ANSI +import de.bixilon.kutil.ansi.ANSI.RESET import de.bixilon.kutil.exception.ExceptionUtil.catchAll import de.bixilon.kutil.shutdown.ShutdownManager import de.bixilon.kutil.time.TimeUtil.millis @@ -37,8 +37,6 @@ import kotlin.contracts.contract @OptIn(ExperimentalContracts::class) object Log { - @Deprecated("Kutil 1.24") - private val RESET = ANSI.formatting(0) var ASYNC_LOGGING = true private val MINOSOFT_START_TIME = millis() private val TIME_FORMAT = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") @@ -108,6 +106,7 @@ object Log { for (line in this.message.ansiColoredMessage.lineSequence()) { stream.println(prefix + line + RESET) } + stream.flush() } catch (exception: Throwable) { SYSTEM_ERR_STREAM.println("Can not send log message $this!")