diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/util')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/FunctionHelper.kt | 53 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt | 31 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/PluginScheduler.kt | 20 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/UUIDUtil.kt | 9 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/ext/Material.kt (renamed from src/main/kotlin/io/dico/parcels2/util/MaterialExtensions.kt) | 2 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/ext/Math.kt (renamed from src/main/kotlin/io/dico/parcels2/util/NumberExtensions.kt) | 2 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/ext/Misc.kt (renamed from src/main/kotlin/io/dico/parcels2/util/MiscExtensions.kt) | 2 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/util/ext/Player.kt (renamed from src/main/kotlin/io/dico/parcels2/util/PlayerExtensions.kt) | 3 |
8 files changed, 57 insertions, 65 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/util/FunctionHelper.kt b/src/main/kotlin/io/dico/parcels2/util/FunctionHelper.kt deleted file mode 100644 index ea16652..0000000 --- a/src/main/kotlin/io/dico/parcels2/util/FunctionHelper.kt +++ /dev/null @@ -1,53 +0,0 @@ -package io.dico.parcels2.util - -import io.dico.parcels2.ParcelsPlugin -import kotlinx.coroutines.experimental.* -import org.bukkit.scheduler.BukkitTask -import kotlin.coroutines.experimental.CoroutineContext - -@Suppress("NOTHING_TO_INLINE") -class FunctionHelper(val plugin: ParcelsPlugin) { - val mainThreadDispatcher: MainThreadDispatcher = MainThreadDispatcherImpl() - - fun <T> deferLazilyOnMainThread(block: suspend CoroutineScope.() -> T): Deferred<T> { - return async(context = mainThreadDispatcher, start = CoroutineStart.LAZY, block = block) - } - - fun <T> deferUndispatchedOnMainThread(block: suspend CoroutineScope.() -> T): Deferred<T> { - return async(context = mainThreadDispatcher, start = CoroutineStart.UNDISPATCHED, block = block) - } - - fun launchLazilyOnMainThread(block: suspend CoroutineScope.() -> Unit): Job { - return launch(context = mainThreadDispatcher, start = CoroutineStart.LAZY, block = block) - } - - inline fun schedule(noinline task: () -> Unit) = schedule(0, task) - - fun schedule(delay: Int, task: () -> Unit): BukkitTask { - return plugin.server.scheduler.runTaskLater(plugin, task, delay.toLong()) - } - - fun scheduleRepeating(delay: Int, interval: Int, task: () -> Unit): BukkitTask { - return plugin.server.scheduler.runTaskTimer(plugin, task, delay.toLong(), interval.toLong()) - } - - abstract class MainThreadDispatcher : CoroutineDispatcher() { - abstract val mainThread: Thread - abstract fun runOnMainThread(task: Runnable) - } - - private inner class MainThreadDispatcherImpl : MainThreadDispatcher() { - override val mainThread: Thread = Thread.currentThread() - - override fun dispatch(context: CoroutineContext, block: Runnable) { - runOnMainThread(block) - } - - @Suppress("OVERRIDE_BY_INLINE") - override inline fun runOnMainThread(task: Runnable) { - if (Thread.currentThread() === mainThread) task.run() - else plugin.server.scheduler.runTaskLater(plugin, task, 0) - } - } - -} diff --git a/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt b/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt new file mode 100644 index 0000000..b1d18ab --- /dev/null +++ b/src/main/kotlin/io/dico/parcels2/util/MainThreadDispatcher.kt @@ -0,0 +1,31 @@ +package io.dico.parcels2.util + +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Runnable +import org.bukkit.plugin.Plugin +import kotlin.coroutines.CoroutineContext + +abstract class MainThreadDispatcher : CoroutineDispatcher() { + abstract val mainThread: Thread + abstract fun runOnMainThread(task: Runnable) +} + +@Suppress("FunctionName") +fun MainThreadDispatcher(plugin: Plugin): MainThreadDispatcher { + return object : MainThreadDispatcher() { + override val mainThread: Thread = Thread.currentThread() + + override fun dispatch(context: CoroutineContext, block: Runnable) { + doDispatch(block) + } + + override fun runOnMainThread(task: Runnable) { + doDispatch(task) + } + + private fun doDispatch(task: Runnable) { + if (Thread.currentThread() === mainThread) task.run() + else plugin.server.scheduler.runTaskLater(plugin, task, 0) + } + } +}
\ No newline at end of file diff --git a/src/main/kotlin/io/dico/parcels2/util/PluginScheduler.kt b/src/main/kotlin/io/dico/parcels2/util/PluginScheduler.kt new file mode 100644 index 0000000..f29ba2b --- /dev/null +++ b/src/main/kotlin/io/dico/parcels2/util/PluginScheduler.kt @@ -0,0 +1,20 @@ +package io.dico.parcels2.util + +import org.bukkit.plugin.Plugin +import org.bukkit.scheduler.BukkitTask + +interface PluginScheduler { + val plugin: Plugin + + fun schedule(delay: Int, task: () -> Unit): BukkitTask { + return plugin.server.scheduler.runTaskLater(plugin, task, delay.toLong()) + } + + fun scheduleRepeating(delay: Int, interval: Int, task: () -> Unit): BukkitTask { + return plugin.server.scheduler.runTaskTimer(plugin, task, delay.toLong(), interval.toLong()) + } +} + +@Suppress("NOTHING_TO_INLINE") +inline fun PluginScheduler.schedule(noinline task: () -> Unit) = schedule(0, task) + diff --git a/src/main/kotlin/io/dico/parcels2/util/UUIDUtil.kt b/src/main/kotlin/io/dico/parcels2/util/UUIDUtil.kt index bca2428..268c1b9 100644 --- a/src/main/kotlin/io/dico/parcels2/util/UUIDUtil.kt +++ b/src/main/kotlin/io/dico/parcels2/util/UUIDUtil.kt @@ -1,16 +1,11 @@ package io.dico.parcels2.util +import io.dico.parcels2.util.ext.isValid import org.bukkit.Bukkit import java.nio.ByteBuffer import java.util.UUID -@Suppress("UsePropertyAccessSyntax") -fun getPlayerNameOrDefault(uuid: UUID?, ifUnknown: String? = null): String { - return uuid - ?.let { getPlayerName(it) } - ?: ifUnknown - ?: ":unknown_name:" -} +const val PLAYER_NAME_PLACEHOLDER = ":unknown_name:" fun getPlayerName(uuid: UUID): String? { return Bukkit.getOfflinePlayer(uuid)?.takeIf { it.isValid }?.name diff --git a/src/main/kotlin/io/dico/parcels2/util/MaterialExtensions.kt b/src/main/kotlin/io/dico/parcels2/util/ext/Material.kt index fadd722..c375cb2 100644 --- a/src/main/kotlin/io/dico/parcels2/util/MaterialExtensions.kt +++ b/src/main/kotlin/io/dico/parcels2/util/ext/Material.kt @@ -1,4 +1,4 @@ -package io.dico.parcels2.util +package io.dico.parcels2.util.ext import org.bukkit.Material import org.bukkit.Material.* diff --git a/src/main/kotlin/io/dico/parcels2/util/NumberExtensions.kt b/src/main/kotlin/io/dico/parcels2/util/ext/Math.kt index 214a797..32540fd 100644 --- a/src/main/kotlin/io/dico/parcels2/util/NumberExtensions.kt +++ b/src/main/kotlin/io/dico/parcels2/util/ext/Math.kt @@ -1,4 +1,4 @@ -package io.dico.parcels2.util +package io.dico.parcels2.util.ext fun Double.floor(): Int { val down = toInt() diff --git a/src/main/kotlin/io/dico/parcels2/util/MiscExtensions.kt b/src/main/kotlin/io/dico/parcels2/util/ext/Misc.kt index 24f9401..d7feabf 100644 --- a/src/main/kotlin/io/dico/parcels2/util/MiscExtensions.kt +++ b/src/main/kotlin/io/dico/parcels2/util/ext/Misc.kt @@ -1,4 +1,4 @@ -package io.dico.parcels2.util +package io.dico.parcels2.util.ext import io.dico.parcels2.logger import java.io.File diff --git a/src/main/kotlin/io/dico/parcels2/util/PlayerExtensions.kt b/src/main/kotlin/io/dico/parcels2/util/ext/Player.kt index 9604365..38402f0 100644 --- a/src/main/kotlin/io/dico/parcels2/util/PlayerExtensions.kt +++ b/src/main/kotlin/io/dico/parcels2/util/ext/Player.kt @@ -1,8 +1,7 @@ -package io.dico.parcels2.util +package io.dico.parcels2.util.ext import io.dico.dicore.Formatting import io.dico.parcels2.ParcelsPlugin -import io.dico.parcels2.PlayerProfile import io.dico.parcels2.logger import org.bukkit.OfflinePlayer import org.bukkit.entity.Player |