From 0052813b88165f4d890deb9c80cb8c4492c4a2db Mon Sep 17 00:00:00 2001 From: Twarug Date: Sat, 24 Jan 2026 13:30:00 +0100 Subject: [PATCH] Add async coroutine scope to KotlinPlugin --- .../main/kotlin/dev/helight/kotale/KotlinPlugin.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mods/kotale/src/main/kotlin/dev/helight/kotale/KotlinPlugin.kt b/mods/kotale/src/main/kotlin/dev/helight/kotale/KotlinPlugin.kt index 714642a..2af9ef9 100644 --- a/mods/kotale/src/main/kotlin/dev/helight/kotale/KotlinPlugin.kt +++ b/mods/kotale/src/main/kotlin/dev/helight/kotale/KotlinPlugin.kt @@ -4,9 +4,11 @@ import com.hypixel.hytale.server.core.plugin.JavaPlugin import com.hypixel.hytale.server.core.plugin.JavaPluginInit import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.async import kotlinx.coroutines.launch abstract class KotlinPlugin(init: JavaPluginInit) : JavaPlugin(init) { @@ -22,7 +24,15 @@ abstract class KotlinPlugin(init: JavaPluginInit) : JavaPlugin(init) { supervisor.cancel() } + fun scope(dispatcher: CoroutineDispatcher = Dispatchers.Default): CoroutineScope { + return CoroutineScope(supervisor + dispatcher) + } + fun launch(dispatcher: CoroutineDispatcher = Dispatchers.Default, block: suspend CoroutineScope.() -> Unit): Job { - return CoroutineScope(supervisor + dispatcher).launch(block = block) + return scope(dispatcher).launch(block = block) + } + + fun async(dispatcher: CoroutineDispatcher = Dispatchers.Default, block: suspend CoroutineScope.() -> T): Deferred { + return scope(dispatcher).async(block = block) } } \ No newline at end of file