From 04971e9c7d56f49786f8f0e7d998bbdacdd0185b Mon Sep 17 00:00:00 2001 From: TheBjoRedCraft Date: Mon, 8 Jun 2026 20:41:27 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(AsyncChatListener,=20DirectMes?= =?UTF-8?q?sageCommand):=20convert=20runPreProcessors=20to=20suspend=20fun?= =?UTF-8?q?ction=20for=20async=20processing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/Project.xml | 10 --------- .idea/codeStyles/codeStyleConfig.xml | 5 ----- .idea/copilot.data.migration.agent.xml | 6 ------ .idea/copilot.data.migration.ask.xml | 6 ------ .idea/copilot.data.migration.ask2agent.xml | 6 ------ .idea/copilot.data.migration.edit.xml | 6 ------ .idea/inspectionProfiles/Project_Default.xml | 7 ------- gradle.properties | 2 +- .../chat/api/processor/PreChatProcessor.kt | 1 + .../command/direct/DirectMessageCommand.kt | 4 ++-- .../chat/paper/listener/AsyncChatListener.kt | 21 +++++++++++-------- 11 files changed, 16 insertions(+), 58 deletions(-) delete mode 100644 .idea/codeStyles/Project.xml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/copilot.data.migration.agent.xml delete mode 100644 .idea/copilot.data.migration.ask.xml delete mode 100644 .idea/copilot.data.migration.ask2agent.xml delete mode 100644 .idea/copilot.data.migration.edit.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 1bec35e5..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c..00000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/copilot.data.migration.agent.xml b/.idea/copilot.data.migration.agent.xml deleted file mode 100644 index 4ea72a91..00000000 --- a/.idea/copilot.data.migration.agent.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/copilot.data.migration.ask.xml b/.idea/copilot.data.migration.ask.xml deleted file mode 100644 index 7ef04e2e..00000000 --- a/.idea/copilot.data.migration.ask.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml deleted file mode 100644 index 1f2ea11e..00000000 --- a/.idea/copilot.data.migration.ask2agent.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/copilot.data.migration.edit.xml b/.idea/copilot.data.migration.edit.xml deleted file mode 100644 index 8648f940..00000000 --- a/.idea/copilot.data.migration.edit.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 78595af7..00000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 40c50f09..1cff6ec9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ kotlin.code.style=official kotlin.stdlib.default.dependency=false org.gradle.parallel=true -version=4.5.0 \ No newline at end of file +version=4.5.1 \ No newline at end of file diff --git a/surf-chat-api/src/main/kotlin/dev/slne/surf/chat/api/processor/PreChatProcessor.kt b/surf-chat-api/src/main/kotlin/dev/slne/surf/chat/api/processor/PreChatProcessor.kt index 5719a169..a4a6e141 100644 --- a/surf-chat-api/src/main/kotlin/dev/slne/surf/chat/api/processor/PreChatProcessor.kt +++ b/surf-chat-api/src/main/kotlin/dev/slne/surf/chat/api/processor/PreChatProcessor.kt @@ -6,4 +6,5 @@ interface PreChatProcessor { val order: Int fun process(context: MessageContext): MessageContext + suspend fun processAsync(context: MessageContext): MessageContext = process(context) } \ No newline at end of file diff --git a/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/command/direct/DirectMessageCommand.kt b/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/command/direct/DirectMessageCommand.kt index 97746428..b046d1da 100644 --- a/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/command/direct/DirectMessageCommand.kt +++ b/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/command/direct/DirectMessageCommand.kt @@ -212,13 +212,13 @@ object DirectMessageAccess { } } -private fun runPreProcessors( +private suspend fun runPreProcessors( original: MessageContext ): MessageContext { var context = original chatProcessorRegistry.preChatProcessors.sortedBy { it.order }.forEach { processor -> - context = processor.process(context) + context = processor.processAsync(context) if (context.isCancelled) { return context diff --git a/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/listener/AsyncChatListener.kt b/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/listener/AsyncChatListener.kt index 0fa250bf..7ab1de9c 100644 --- a/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/listener/AsyncChatListener.kt +++ b/surf-chat-paper/src/main/kotlin/dev/slne/surf/chat/paper/listener/AsyncChatListener.kt @@ -11,6 +11,7 @@ import dev.slne.surf.chat.paper.util.cancel import dev.slne.surf.chat.paper.util.uuidOrNull import dev.slne.surf.core.api.common.SurfCoreApi import io.papermc.paper.event.player.AsyncChatEvent +import kotlinx.coroutines.runBlocking import org.bukkit.event.EventHandler import org.bukkit.event.Listener import java.time.OffsetDateTime @@ -36,15 +37,17 @@ object AsyncChatListener : Listener { MessageType.GLOBAL ) - val result = runPreProcessors(MessageContext(data, event.isCancelled, event.viewers())) - data = result.messageData + runBlocking { + val result = runPreProcessors(MessageContext(data, event.isCancelled, event.viewers())) + data = result.messageData - if (result.isCancelled) { - event.cancel() - } + if (result.isCancelled) { + event.cancel() + } - event.renderer { _, _, _, viewer -> - viewer.uuidOrNull()?.let { result.render(it, viewer) } ?: event.message() + event.renderer { _, _, _, viewer -> + viewer.uuidOrNull()?.let { result.render(it, viewer) } ?: event.message() + } } plugin.launch { @@ -56,13 +59,13 @@ object AsyncChatListener : Listener { } } - private fun runPreProcessors( + private suspend fun runPreProcessors( original: MessageContext ): MessageContext { var context = original chatProcessorRegistry.preChatProcessors.sortedBy { it.order }.forEach { processor -> - context = processor.process(context) + context = processor.processAsync(context) if (context.isCancelled) { return context