Lazy update
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package net.axay.kspigot.main
|
package net.axay.kspigot.main
|
||||||
|
|
||||||
|
import net.axay.kspigot.kotlinextensions.closeIfInitialized
|
||||||
import net.axay.kspigot.runnables.KRunnableHolder
|
import net.axay.kspigot.runnables.KRunnableHolder
|
||||||
import org.bukkit.plugin.java.JavaPlugin
|
import org.bukkit.plugin.java.JavaPlugin
|
||||||
|
|
||||||
@@ -18,7 +19,10 @@ import org.bukkit.plugin.java.JavaPlugin
|
|||||||
*/
|
*/
|
||||||
abstract class KSpigot : 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
|
* Called when the plugin was loaded
|
||||||
@@ -44,8 +48,12 @@ abstract class KSpigot : JavaPlugin() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final override fun onDisable() {
|
final override fun onDisable() {
|
||||||
|
|
||||||
shutdown()
|
shutdown()
|
||||||
kRunnableHolder.shutdown()
|
|
||||||
|
// avoid unnecessary load of lazy properties
|
||||||
|
kRunnableHolderProperty.closeIfInitialized()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@@ -7,7 +7,7 @@ import org.bukkit.Bukkit
|
|||||||
import org.bukkit.plugin.Plugin
|
import org.bukkit.plugin.Plugin
|
||||||
import org.bukkit.scheduler.BukkitRunnable
|
import org.bukkit.scheduler.BukkitRunnable
|
||||||
|
|
||||||
class KRunnableHolder {
|
class KRunnableHolder : AutoCloseable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [BukkitRunnable] for tracking the responsible runnable.
|
* [BukkitRunnable] for tracking the responsible runnable.
|
||||||
@@ -17,7 +17,7 @@ class KRunnableHolder {
|
|||||||
*/
|
*/
|
||||||
private val runnableEndCallbacks = HashMap<BukkitRunnable, Pair<() -> Unit, Boolean>>()
|
private val runnableEndCallbacks = HashMap<BukkitRunnable, Pair<() -> Unit, Boolean>>()
|
||||||
|
|
||||||
fun shutdown() {
|
override fun close() {
|
||||||
runnableEndCallbacks.values.forEach { if (it.second) it.first.invoke() }
|
runnableEndCallbacks.values.forEach { if (it.second) it.first.invoke() }
|
||||||
runnableEndCallbacks.clear()
|
runnableEndCallbacks.clear()
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user