diff --git a/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt b/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt index 4f7a6cb0..8fb6df78 100644 --- a/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt +++ b/src/main/kotlin/net/axay/kspigot/main/KSpigot.kt @@ -1,5 +1,6 @@ package net.axay.kspigot.main +import net.axay.kspigot.kotlinextensions.closeIfInitialized import net.axay.kspigot.runnables.KRunnableHolder import org.bukkit.plugin.java.JavaPlugin @@ -18,7 +19,10 @@ import org.bukkit.plugin.java.JavaPlugin */ abstract class KSpigot : JavaPlugin() { - val kRunnableHolder = KRunnableHolder() + // lazy properties + private val kRunnableHolderProperty = lazy { KRunnableHolder() } + + val kRunnableHolder by kRunnableHolderProperty /** * Called when the plugin was loaded @@ -44,8 +48,12 @@ abstract class KSpigot : JavaPlugin() { } final override fun onDisable() { + shutdown() - kRunnableHolder.shutdown() + + // avoid unnecessary load of lazy properties + kRunnableHolderProperty.closeIfInitialized() + } } \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/runnables/KSpigotRunnables.kt b/src/main/kotlin/net/axay/kspigot/runnables/KSpigotRunnables.kt index 97b95b64..653d0e21 100644 --- a/src/main/kotlin/net/axay/kspigot/runnables/KSpigotRunnables.kt +++ b/src/main/kotlin/net/axay/kspigot/runnables/KSpigotRunnables.kt @@ -7,7 +7,7 @@ import org.bukkit.Bukkit import org.bukkit.plugin.Plugin import org.bukkit.scheduler.BukkitRunnable -class KRunnableHolder { +class KRunnableHolder : AutoCloseable { /** * [BukkitRunnable] for tracking the responsible runnable. @@ -17,7 +17,7 @@ class KRunnableHolder { */ private val runnableEndCallbacks = HashMap Unit, Boolean>>() - fun shutdown() { + override fun close() { runnableEndCallbacks.values.forEach { if (it.second) it.first.invoke() } runnableEndCallbacks.clear() }