diff --git a/build.sbt b/build.sbt index 8171c2d..1ed281e 100644 --- a/build.sbt +++ b/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" diff --git a/src/main/scala/buttondevteam/discordplugin/mcchat/MCChatUtils.scala b/src/main/scala/buttondevteam/discordplugin/mcchat/MCChatUtils.scala index 4e8c40e..1cf1ae8 100644 --- a/src/main/scala/buttondevteam/discordplugin/mcchat/MCChatUtils.scala +++ b/src/main/scala/buttondevteam/discordplugin/mcchat/MCChatUtils.scala @@ -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 () diff --git a/src/main/scala/buttondevteam/discordplugin/mcchat/MCListener.scala b/src/main/scala/buttondevteam/discordplugin/mcchat/MCListener.scala index 1e7dec6..c0052d6 100644 --- a/src/main/scala/buttondevteam/discordplugin/mcchat/MCListener.scala +++ b/src/main/scala/buttondevteam/discordplugin/mcchat/MCListener.scala @@ -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() } diff --git a/src/main/scala/buttondevteam/discordplugin/mcchat/MinecraftChatModule.scala b/src/main/scala/buttondevteam/discordplugin/mcchat/MinecraftChatModule.scala index 6e56331..2a8c7d3 100644 --- a/src/main/scala/buttondevteam/discordplugin/mcchat/MinecraftChatModule.scala +++ b/src/main/scala/buttondevteam/discordplugin/mcchat/MinecraftChatModule.scala @@ -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) diff --git a/src/main/scala/buttondevteam/discordplugin/mcchat/sender/DiscordSenderBase.scala b/src/main/scala/buttondevteam/discordplugin/mcchat/sender/DiscordSenderBase.scala index ab198bc..4fffdc7 100644 --- a/src/main/scala/buttondevteam/discordplugin/mcchat/sender/DiscordSenderBase.scala +++ b/src/main/scala/buttondevteam/discordplugin/mcchat/sender/DiscordSenderBase.scala @@ -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)