1
1
package com.lambda.client.module.modules.chat
2
2
3
3
import com.lambda.client.LambdaMod
4
- import com.lambda.client.event.listener.listener
5
4
import com.lambda.client.module.Category
6
5
import com.lambda.client.module.Module
7
6
import com.lambda.client.util.text.MessageDetection
8
7
import com.lambda.client.util.text.MessageSendHelper
9
8
import com.lambda.client.util.text.SpamFilters
9
+ import com.lambda.client.util.threads.safeListener
10
10
import net.minecraft.util.text.TextComponentString
11
11
import net.minecraftforge.client.event.ClientChatReceivedEvent
12
12
import java.util.concurrent.ConcurrentHashMap
@@ -32,6 +32,8 @@ object AntiSpam : Module(
32
32
private val specialCharBegin = setting(" Special Begin" , true , { page == Page .TYPE })
33
33
private val greenText = setting(" Green Text" , false , { page == Page .TYPE })
34
34
private val fancyChat by setting(" Fancy Chat" , false , { page == Page .TYPE })
35
+ private val lagMessage by setting(" Lag Message" , true , { page == Page .TYPE })
36
+ private val thresholdLagMessage by setting(" Threshold Lag" , 256 , 256 .. 1024 , 1 , { page == Page .TYPE && lagMessage }) // Is 1024 the max?
35
37
36
38
/* Page Two */
37
39
private val aggressiveFiltering by setting(" Aggressive Filtering" , true , { page == Page .SETTINGS })
@@ -82,8 +84,10 @@ object AntiSpam : Module(
82
84
messageHistory.clear()
83
85
}
84
86
85
- listener<ClientChatReceivedEvent > { event ->
86
- if (mc.player == null ) return @listener
87
+ safeListener<ClientChatReceivedEvent > { event ->
88
+ if (lagMessage && isLagMessage(event.message.unformattedText)) {
89
+ event.isCanceled = true
90
+ }
87
91
88
92
messageHistory.values.removeIf { System .currentTimeMillis() - it > 600000 }
89
93
@@ -131,6 +135,16 @@ object AntiSpam : Module(
131
135
}
132
136
}
133
137
138
+ private fun isLagMessage (message : String ): Boolean {
139
+ return if (! filterOwn && isOwn(message)
140
+ || ! filterDMs && MessageDetection .Direct .ANY detect message
141
+ || ! filterServer && MessageDetection .Server .ANY detect message) {
142
+ false
143
+ } else {
144
+ message.getBytes() > thresholdLagMessage
145
+ }
146
+ }
147
+
134
148
private fun detectSpam (message : String ): String? {
135
149
for ((key, value) in settingMap) {
136
150
findPatterns(value, message)?.let {
@@ -169,6 +183,9 @@ object AntiSpam : Module(
169
183
return isDuplicate
170
184
}
171
185
186
+ private fun String.getBytes (): Int {
187
+ return this .toByteArray().size
188
+ }
172
189
173
190
private fun isOwn (message : String ): Boolean {
174
191
/* mc.player is null when the module is being registered, so this matcher isn't added alongside the other FilterPatterns */
0 commit comments