Fix broadcast message check (#134)
- Now it keeps track of Bukkit broadcast messages instead of checking the stack trace
This commit is contained in:
parent
a4f1463314
commit
0610ee434b
5 changed files with 14 additions and 10 deletions
10
build.sbt
10
build.sbt
|
@ -22,17 +22,17 @@ libraryDependencies ++= Seq(
|
|||
"org.spigotmc." % "spigot" % "1.14.4-R0.1-SNAPSHOT" % Provided,
|
||||
"com.destroystokyo.paper" % "paper" % "1.16.3-R0.1-SNAPSHOT" % Provided,
|
||||
|
||||
"com.discord4j" % "discord4j-core" % "3.2.1",
|
||||
"org.slf4j" % "slf4j-jdk14" % "1.7.32",
|
||||
"com.discord4j" % "discord4j-core" % "3.2.2",
|
||||
"org.slf4j" % "slf4j-jdk14" % "1.7.36",
|
||||
"com.vdurmont" % "emoji-java" % "5.1.1",
|
||||
"org.mockito" % "mockito-core" % "4.2.0",
|
||||
"org.mockito" % "mockito-core" % "4.6.1",
|
||||
"io.projectreactor" % "reactor-scala-extensions_2.13" % "0.8.0",
|
||||
// https://mvnrepository.com/artifact/org.immutables/value
|
||||
"org.immutables" % "value" % "2.8.8" % "provided",
|
||||
"org.immutables" % "value" % "2.9.0" % "provided",
|
||||
|
||||
"com.github.TBMCPlugins.ChromaCore" % "Chroma-Core" % "v1.0.0" % Provided,
|
||||
"net.ess3" % "EssentialsX" % "2.17.1" % Provided,
|
||||
"net.luckperms" % "api" % "5.3" % Provided,
|
||||
"net.luckperms" % "api" % "5.4" % Provided,
|
||||
)
|
||||
|
||||
assembly / assemblyJarName := "Chroma-Discord.jar"
|
||||
|
|
|
@ -31,7 +31,7 @@ import java.util.concurrent.atomic.AtomicInteger
|
|||
import java.util.logging.Level
|
||||
import java.util.stream.Collectors
|
||||
import javax.annotation.Nullable
|
||||
import scala.collection.concurrent
|
||||
import scala.collection.{concurrent, mutable}
|
||||
import scala.collection.convert.ImplicitConversions.`map AsJavaMap`
|
||||
import scala.collection.mutable.ListBuffer
|
||||
import scala.jdk.CollectionConverters.{CollectionHasAsScala, SeqHasAsJava}
|
||||
|
@ -50,6 +50,8 @@ object MCChatUtils {
|
|||
private var module: MinecraftChatModule = null
|
||||
private val staticExcludedPlugins: concurrent.Map[Class[_ <: Event], util.HashSet[String]] = concurrent.TrieMap()
|
||||
|
||||
val broadcastedMessages: mutable.Map[String, Long] = mutable.Map()
|
||||
|
||||
def updatePlayerList(): Unit = {
|
||||
val mod = getModule
|
||||
if (mod == null || !mod.showPlayerListOnDC.get) return ()
|
||||
|
|
|
@ -109,7 +109,7 @@ class MCListener(val module: MinecraftChatModule) extends Listener {
|
|||
MCChatUtils.forAllowedMCChat(MCChatUtils.send(event.getMessage), event).subscribe()
|
||||
|
||||
@EventHandler def onBroadcastMessage(event: BroadcastMessageEvent): Unit = {
|
||||
module.broadcastedMessages += ((event.getMessage, System.nanoTime()))
|
||||
MCChatUtils.broadcastedMessages += ((event.getMessage, System.nanoTime()))
|
||||
MCChatUtils.forCustomAndAllMCChat(MCChatUtils.send(event.getMessage), ChannelconBroadcast.BROADCAST, hookmsg = false).subscribe()
|
||||
}
|
||||
|
||||
|
|
|
@ -102,8 +102,6 @@ class MinecraftChatModule extends Component[DiscordPlugin] {
|
|||
final private val mcChatCommand = new MCChatCommand(this)
|
||||
final private val channelconCommand = new ChannelconCommand(this)
|
||||
|
||||
val broadcastedMessages: mutable.Map[String, Long] = mutable.Map()
|
||||
|
||||
override protected def enable(): Unit = {
|
||||
if (DPUtils.disableIfConfigErrorRes(this, chatChannel, chatChannelMono)) return ()
|
||||
listener = new MCChatListener(this)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package buttondevteam.discordplugin.mcchat.sender
|
||||
|
||||
import buttondevteam.discordplugin.mcchat.MCChatUtils
|
||||
import buttondevteam.discordplugin.{DPUtils, DiscordPlugin}
|
||||
import buttondevteam.lib.TBMCCoreAPI
|
||||
import buttondevteam.lib.player.ChromaGamerBase
|
||||
|
@ -40,8 +41,11 @@ abstract class DiscordSenderBase protected(var user: User, var channel: MessageC
|
|||
}
|
||||
|
||||
override def sendMessage(message: String): Unit = try {
|
||||
val broadcast = new Exception().getStackTrace()(2).getMethodName.contains("broadcast")
|
||||
val broadcast = MCChatUtils.broadcastedMessages.contains(message);
|
||||
if (broadcast) { //We're catching broadcasts using the Bukkit event
|
||||
if (MCChatUtils.broadcastedMessages.size >= 4) { // We really don't need to store messages for long
|
||||
MCChatUtils.broadcastedMessages.filterInPlace((_, time) => time > System.nanoTime() - 1000 * 1000 * 1000)
|
||||
}
|
||||
return ()
|
||||
}
|
||||
val sendmsg = DPUtils.sanitizeString(message)
|
||||
|
|
Loading…
Reference in a new issue