Hide repeated error messages in logs

This commit is contained in:
Linnea Gräf
2024-02-13 16:35:10 +01:00
parent ed9b49c8a3
commit a20e3696ec
2 changed files with 10 additions and 2 deletions

View File

@@ -16,7 +16,10 @@ import moe.nea.firmament.Firmament
* Subscriptions may not necessarily be delivered in the order of registering.
*/
open class FirmamentEventBus<T : FirmamentEvent> {
data class Handler<T>(val invocation: (T) -> Unit, val receivesCancelled: Boolean)
data class Handler<T>(
val invocation: (T) -> Unit, val receivesCancelled: Boolean,
var knownErrors: MutableSet<Class<*>> = mutableSetOf(),
)
private val toHandle: MutableList<Handler<T>> = CopyOnWriteArrayList()
fun subscribe(handle: (T) -> Unit) {
@@ -33,7 +36,11 @@ open class FirmamentEventBus<T : FirmamentEvent> {
try {
function.invocation(event)
} catch (e: Exception) {
Firmament.logger.error("Caught exception during processing event $event by $function", e)
val klass = e.javaClass
if (!function.knownErrors.contains(klass) || Firmament.DEBUG) {
function.knownErrors.add(klass)
Firmament.logger.error("Caught exception during processing event $event by $function", e)
}
}
}
}

View File

@@ -44,6 +44,7 @@ object CustomSkyBlockTextures : FirmamentFeature {
it.overrideModel = ModelIdentifier("firmskyblock", id.identifier.path, "inventory")
}
TickEvent.subscribe {
throw RuntimeException()
if (TConfig.cacheDuration < 1 || it.tickCount % TConfig.cacheDuration == 0) {
CustomItemModelEvent.clearCache()
skullTextureCache.clear()