From fb40ab45f0b4979420bae066da2244f4fdd52db8 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Tue, 24 Sep 2024 13:16:55 +0200 Subject: snapshot --- src/main/kotlin/ChatStore.kt | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/kotlin/ChatStore.kt (limited to 'src/main/kotlin/ChatStore.kt') diff --git a/src/main/kotlin/ChatStore.kt b/src/main/kotlin/ChatStore.kt new file mode 100644 index 0000000..2d9ff30 --- /dev/null +++ b/src/main/kotlin/ChatStore.kt @@ -0,0 +1,37 @@ +package moe.nea.ultranotifier + +import moe.nea.ultranotifier.event.ChatGuiLineEvent +import moe.nea.ultranotifier.event.PacketChatLineEvent +import moe.nea.ultranotifier.event.SubscriptionTarget +import moe.nea.ultranotifier.event.UltraSubscribe +import moe.nea.ultranotifier.util.IdentityCharacteristics +import net.minecraft.text.Text + +object ChatStore : SubscriptionTarget { + + data class ChatLine( + val text: Text, + var fromPacket: Boolean = false, + var isDisplayed: Boolean = false, + ) + + val allLines = object : LinkedHashMap, ChatLine>() { + override fun removeEldestEntry(eldest: MutableMap.MutableEntry, ChatLine>?): Boolean { + return size > 500 // TODO: config + } + } + + fun insertChatLine(text: Text): ChatLine { + return allLines.getOrPut(IdentityCharacteristics(text)) { ChatLine(text) } + } + + @UltraSubscribe + fun onMessageDisplayed(event: ChatGuiLineEvent) { + insertChatLine(event.component).isDisplayed = true + } + + @UltraSubscribe + fun onMessageReceived(event: PacketChatLineEvent) { + insertChatLine(event.component).fromPacket = true + } +} -- cgit