aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/dulkirfabric/features/chat
diff options
context:
space:
mode:
authorronald <inglettronald@gmail.com>2023-07-29 00:13:53 -0500
committerronald <inglettronald@gmail.com>2023-07-29 00:13:53 -0500
commitd3e13e38e22b8eecd5198c59cf6a132cc9425b33 (patch)
treee70a8fdc86d00cf22a281fcde09b856f09b45a11 /src/main/kotlin/com/dulkirfabric/features/chat
parent71b8238eff91de0243e641c2eeadacd61b8f0f88 (diff)
downloadDulkirMod-Fabric-d3e13e38e22b8eecd5198c59cf6a132cc9425b33.tar.gz
DulkirMod-Fabric-d3e13e38e22b8eecd5198c59cf6a132cc9425b33.tar.bz2
DulkirMod-Fabric-d3e13e38e22b8eecd5198c59cf6a132cc9425b33.zip
Lots of slayer backend and a smattering of random features (Lightning/fire culling, chat stacking improvements, aotv highlight stuff, etc)
Diffstat (limited to 'src/main/kotlin/com/dulkirfabric/features/chat')
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt b/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt
index 02d1914..d222540 100644
--- a/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt
+++ b/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt
@@ -4,7 +4,9 @@ import com.dulkirfabric.DulkirModFabric.mc
import com.dulkirfabric.events.LongUpdateEvent
import com.dulkirfabric.events.chat.ChatEvents
import com.dulkirfabric.util.ScoreBoardUtils.formattedString
+import com.dulkirfabric.util.TextUtils
import meteordevelopment.orbit.EventHandler
+import net.minecraft.text.MutableText
import net.minecraft.text.Text
object ChatStacking {
@@ -12,19 +14,32 @@ object ChatStacking {
data class ChatLog(var timestamp: Long, val message: Text, var frequency: Int)
private var chatLogs = mutableSetOf<ChatLog>()
+ private val stackRegex = """ §7\((\d+)\)$""".toRegex()
+ private val whiteListedMessages = listOf(
+ "".toRegex(),
+ "(-+)".toRegex()
+ )
@EventHandler
- fun modifyChat(event: ChatEvents.ModifyChat) {
+ fun modifyChat(event: ChatEvents.AllowChat) {
chatLogs.forEach { curMsg ->
if (curMsg.message.string.equals(event.message.string)) {
+ // Probably don't stack empty lines and the long bars
+ if (whiteListedMessages.any {
+ it matches event.message.string
+ }) return
+
curMsg.timestamp = System.currentTimeMillis()
curMsg.frequency++
mc.inGameHud.chatHud.messages.removeIf { msg ->
- msg.content.string == curMsg.message.string
- && mc.inGameHud.ticks - msg.creationTick >= 1200
+ TextUtils.stripColorCodes(msg.content.string.replace(stackRegex, "")) == curMsg.message.string
+ && mc.inGameHud.ticks - msg.creationTick <= 1200
}
+ mc.inGameHud.chatHud.addMessage(Text.literal("${curMsg.message.formattedString()} §7(${curMsg.frequency})"))
mc.inGameHud.chatHud.refresh()
- event.setReturnValue(Text.literal("${curMsg.message.formattedString()} §7(${curMsg .frequency})"))
+ // TODO: implement something like this to avoid stripColorCodes call
+ // MutableText.of(event.message.content).append(Text.literal(" §7(${curMsg.frequency})"))
+ event.cancel()
return
}
}