diff options
| author | ronald <inglettronald@gmail.com> | 2023-07-29 00:13:53 -0500 |
|---|---|---|
| committer | ronald <inglettronald@gmail.com> | 2023-07-29 00:13:53 -0500 |
| commit | d3e13e38e22b8eecd5198c59cf6a132cc9425b33 (patch) | |
| tree | e70a8fdc86d00cf22a281fcde09b856f09b45a11 /src/main/kotlin/com/dulkirfabric/features/chat | |
| parent | 71b8238eff91de0243e641c2eeadacd61b8f0f88 (diff) | |
| download | DulkirMod-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.kt | 23 |
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 } } |
