Implement common configuration loading mechanism.

This commit is contained in:
2023-03-19 16:35:09 -07:00
parent 59fbea0a37
commit a043e0852f
9 changed files with 48 additions and 63 deletions

View File

@ -1,11 +1,8 @@
package gay.pizza.foundation.core.features.backup
import com.charleskorn.kaml.Yaml
import gay.pizza.foundation.core.FoundationCorePlugin
import gay.pizza.foundation.core.abstraction.Feature
import gay.pizza.foundation.core.features.scheduler.cancel
import gay.pizza.foundation.core.features.scheduler.cron
import gay.pizza.foundation.shared.copyDefaultConfig
import org.koin.core.component.inject
import org.koin.dsl.module
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials
@ -13,7 +10,6 @@ import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
import software.amazon.awssdk.regions.Region
import software.amazon.awssdk.services.s3.S3Client
import java.net.URI
import kotlin.io.path.inputStream
class BackupFeature : Feature() {
private val s3Client by inject<S3Client>()
@ -46,14 +42,10 @@ class BackupFeature : Feature() {
override fun module() = module {
single {
val configPath = copyDefaultConfig<FoundationCorePlugin>(
plugin.slF4JLogger,
plugin.pluginDataPath,
"backup.yaml",
)
return@single Yaml.default.decodeFromStream(
plugin.loadConfigurationWithDefault(
plugin,
BackupConfig.serializer(),
configPath.inputStream()
"backup.yaml"
)
}
single {

View File

@ -1,8 +1,5 @@
package gay.pizza.foundation.core.features.gameplay
import com.charleskorn.kaml.Yaml
import gay.pizza.foundation.shared.copyDefaultConfig
import gay.pizza.foundation.core.FoundationCorePlugin
import gay.pizza.foundation.core.abstraction.Feature
import org.bukkit.Bukkit
import org.bukkit.Material
@ -17,21 +14,16 @@ import org.bukkit.event.player.PlayerInteractEntityEvent
import org.bukkit.inventory.ItemStack
import org.koin.core.component.inject
import org.koin.dsl.module
import kotlin.io.path.inputStream
class GameplayFeature : Feature() {
private val config by inject<GameplayConfig>()
override fun module() = module {
single {
val configPath = copyDefaultConfig<FoundationCorePlugin>(
plugin.slF4JLogger,
plugin.pluginDataPath,
"gameplay.yaml",
)
return@single Yaml.default.decodeFromStream(
plugin.loadConfigurationWithDefault(
plugin,
GameplayConfig.serializer(),
configPath.inputStream()
"gameplay.yaml"
)
}
}

View File

@ -1,12 +1,9 @@
package gay.pizza.foundation.core.features.player
import com.charleskorn.kaml.Yaml
import com.google.common.cache.Cache
import com.google.common.cache.CacheBuilder
import com.google.common.cache.RemovalCause
import gay.pizza.foundation.core.FoundationCorePlugin
import gay.pizza.foundation.core.abstraction.Feature
import gay.pizza.foundation.shared.copyDefaultConfig
import net.kyori.adventure.text.Component
import org.bukkit.GameMode
import org.bukkit.event.EventHandler
@ -16,7 +13,6 @@ import org.bukkit.event.player.PlayerMoveEvent
import org.bukkit.event.player.PlayerQuitEvent
import org.koin.core.component.inject
import java.time.Duration
import kotlin.io.path.inputStream
class PlayerFeature : Feature() {
private val config by inject<PlayerConfig>()
@ -53,14 +49,10 @@ class PlayerFeature : Feature() {
override fun module() = org.koin.dsl.module {
single {
val configPath = copyDefaultConfig<FoundationCorePlugin>(
plugin.slF4JLogger,
plugin.pluginDataPath,
"player.yaml",
)
return@single Yaml.default.decodeFromStream(
plugin.loadConfigurationWithDefault(
plugin,
PlayerConfig.serializer(),
configPath.inputStream()
"player.yaml"
)
}
}