diff options
author | Dico <dico.karssiens@gmail.com> | 2018-09-25 08:40:02 +0100 |
---|---|---|
committer | Dico <dico.karssiens@gmail.com> | 2018-09-25 08:40:02 +0100 |
commit | dcd90c09add292300b163edf44c26ddf99f1199b (patch) | |
tree | 7f4dac848950910dd4535cb1a946b84f6aa5aa0a /src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt | |
parent | 98395542a507e40a9058d2ed6332853ec20b23fc (diff) |
Work on RegionTraverser (wasted a lotta time but we'll get there)
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt b/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt index b1d18ab..ce1bf0f 100644 --- a/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt +++ b/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt @@ -1,11 +1,14 @@ package io.dico.parcels2.util +import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Delay import kotlinx.coroutines.Runnable +import kotlinx.coroutines.timeunit.TimeUnit import org.bukkit.plugin.Plugin import kotlin.coroutines.CoroutineContext -abstract class MainThreadDispatcher : CoroutineDispatcher() { +abstract class MainThreadDispatcher : CoroutineDispatcher(), Delay { abstract val mainThread: Thread abstract fun runOnMainThread(task: Runnable) } @@ -27,5 +30,14 @@ fun MainThreadDispatcher(plugin: Plugin): MainThreadDispatcher { if (Thread.currentThread() === mainThread) task.run() else plugin.server.scheduler.runTaskLater(plugin, task, 0) } + + override fun scheduleResumeAfterDelay(time: Long, unit: TimeUnit, continuation: CancellableContinuation<Unit>) { + val task = Runnable { + with (continuation) { resumeUndispatched(Unit) } + } + + val millis = TimeUnit.MILLISECONDS.convert(time, unit) + plugin.server.scheduler.runTaskLater(plugin, task, (millis + 25) / 50 - 1) + } } }
\ No newline at end of file |