mirror of
				https://github.com/GayPizzaSpecifications/foundation.git
				synced 2025-11-04 03:39:37 +00:00 
			
		
		
		
	Implement common configuration loading mechanism.
This commit is contained in:
		@ -1,5 +1,8 @@
 | 
				
			|||||||
package gay.pizza.foundation.common
 | 
					package gay.pizza.foundation.common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import gay.pizza.foundation.shared.IFoundationCore
 | 
				
			||||||
 | 
					import gay.pizza.foundation.shared.loadConfigurationWithDefault
 | 
				
			||||||
 | 
					import kotlinx.serialization.DeserializationStrategy
 | 
				
			||||||
import org.bukkit.command.CommandExecutor
 | 
					import org.bukkit.command.CommandExecutor
 | 
				
			||||||
import org.bukkit.command.TabCompleter
 | 
					import org.bukkit.command.TabCompleter
 | 
				
			||||||
import org.bukkit.plugin.java.JavaPlugin
 | 
					import org.bukkit.plugin.java.JavaPlugin
 | 
				
			||||||
@ -18,4 +21,14 @@ abstract class BaseFoundationPlugin : JavaPlugin() {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  inline fun <reified T> loadConfigurationWithDefault(
 | 
				
			||||||
 | 
					    core: IFoundationCore,
 | 
				
			||||||
 | 
					    deserializer: DeserializationStrategy<T>,
 | 
				
			||||||
 | 
					    name: String
 | 
				
			||||||
 | 
					  ): T {
 | 
				
			||||||
 | 
					    return loadConfigurationWithDefault(
 | 
				
			||||||
 | 
					      slF4JLogger, deserializer,
 | 
				
			||||||
 | 
					      core.pluginDataPath, name)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,5 @@
 | 
				
			|||||||
package gay.pizza.foundation.bifrost
 | 
					package gay.pizza.foundation.bifrost
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.charleskorn.kaml.Yaml
 | 
					 | 
				
			||||||
import gay.pizza.foundation.bifrost.model.BifrostConfig
 | 
					import gay.pizza.foundation.bifrost.model.BifrostConfig
 | 
				
			||||||
import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
					import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
				
			||||||
import gay.pizza.foundation.common.FoundationCoreLoader
 | 
					import gay.pizza.foundation.common.FoundationCoreLoader
 | 
				
			||||||
@ -24,7 +23,6 @@ import org.bukkit.event.player.PlayerAdvancementDoneEvent
 | 
				
			|||||||
import org.bukkit.event.player.PlayerJoinEvent
 | 
					import org.bukkit.event.player.PlayerJoinEvent
 | 
				
			||||||
import org.bukkit.event.player.PlayerQuitEvent
 | 
					import org.bukkit.event.player.PlayerQuitEvent
 | 
				
			||||||
import java.awt.Color
 | 
					import java.awt.Color
 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
import net.dv8tion.jda.api.hooks.EventListener as DiscordEventListener
 | 
					import net.dv8tion.jda.api.hooks.EventListener as DiscordEventListener
 | 
				
			||||||
import org.bukkit.event.Listener as BukkitEventListener
 | 
					import org.bukkit.event.Listener as BukkitEventListener
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -37,13 +35,11 @@ class FoundationBifrostPlugin : BaseFoundationPlugin(), DiscordEventListener, Bu
 | 
				
			|||||||
  override fun onEnable() {
 | 
					  override fun onEnable() {
 | 
				
			||||||
    isDev = description.version == "DEV"
 | 
					    isDev = description.version == "DEV"
 | 
				
			||||||
    val foundation = FoundationCoreLoader.get(server)
 | 
					    val foundation = FoundationCoreLoader.get(server)
 | 
				
			||||||
    val configPath = copyDefaultConfig<FoundationBifrostPlugin>(
 | 
					    config = loadConfigurationWithDefault(
 | 
				
			||||||
      slF4JLogger,
 | 
					      foundation,
 | 
				
			||||||
      foundation.pluginDataPath,
 | 
					      BifrostConfig.serializer(),
 | 
				
			||||||
      "bifrost.yaml"
 | 
					      "bifrost.yaml"
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    config = Yaml.default.decodeFromStream(BifrostConfig.serializer(), configPath.inputStream())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    server.pluginManager.registerEvents(this, this)
 | 
					    server.pluginManager.registerEvents(this, this)
 | 
				
			||||||
    if (config.authentication.token.isEmpty()) {
 | 
					    if (config.authentication.token.isEmpty()) {
 | 
				
			||||||
      slF4JLogger.warn("Token empty, Bifrost will not connect to Discord.")
 | 
					      slF4JLogger.warn("Token empty, Bifrost will not connect to Discord.")
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,9 @@
 | 
				
			|||||||
package gay.pizza.foundation.chaos
 | 
					package gay.pizza.foundation.chaos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.charleskorn.kaml.Yaml
 | 
					 | 
				
			||||||
import gay.pizza.foundation.chaos.model.ChaosConfig
 | 
					import gay.pizza.foundation.chaos.model.ChaosConfig
 | 
				
			||||||
import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
					import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
				
			||||||
import gay.pizza.foundation.common.FoundationCoreLoader
 | 
					import gay.pizza.foundation.common.FoundationCoreLoader
 | 
				
			||||||
import gay.pizza.foundation.shared.PluginMainClass
 | 
					import gay.pizza.foundation.shared.PluginMainClass
 | 
				
			||||||
import gay.pizza.foundation.shared.copyDefaultConfig
 | 
					 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@PluginMainClass
 | 
					@PluginMainClass
 | 
				
			||||||
class FoundationChaosPlugin : BaseFoundationPlugin() {
 | 
					class FoundationChaosPlugin : BaseFoundationPlugin() {
 | 
				
			||||||
@ -18,12 +15,11 @@ class FoundationChaosPlugin : BaseFoundationPlugin() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  override fun onEnable() {
 | 
					  override fun onEnable() {
 | 
				
			||||||
    val foundation = FoundationCoreLoader.get(server)
 | 
					    val foundation = FoundationCoreLoader.get(server)
 | 
				
			||||||
    val configPath = copyDefaultConfig<FoundationChaosPlugin>(
 | 
					    config = loadConfigurationWithDefault(
 | 
				
			||||||
      slF4JLogger,
 | 
					      foundation,
 | 
				
			||||||
      foundation.pluginDataPath,
 | 
					      ChaosConfig.serializer(),
 | 
				
			||||||
      "chaos.yaml"
 | 
					      "heimdall.yaml"
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    config = Yaml.default.decodeFromStream(ChaosConfig.serializer(), configPath.inputStream())
 | 
					 | 
				
			||||||
    registerCommandExecutor("chaos", ChaosToggleCommand())
 | 
					    registerCommandExecutor("chaos", ChaosToggleCommand())
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,11 +1,8 @@
 | 
				
			|||||||
package gay.pizza.foundation.core.features.backup
 | 
					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.abstraction.Feature
 | 
				
			||||||
import gay.pizza.foundation.core.features.scheduler.cancel
 | 
					import gay.pizza.foundation.core.features.scheduler.cancel
 | 
				
			||||||
import gay.pizza.foundation.core.features.scheduler.cron
 | 
					import gay.pizza.foundation.core.features.scheduler.cron
 | 
				
			||||||
import gay.pizza.foundation.shared.copyDefaultConfig
 | 
					 | 
				
			||||||
import org.koin.core.component.inject
 | 
					import org.koin.core.component.inject
 | 
				
			||||||
import org.koin.dsl.module
 | 
					import org.koin.dsl.module
 | 
				
			||||||
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials
 | 
					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.regions.Region
 | 
				
			||||||
import software.amazon.awssdk.services.s3.S3Client
 | 
					import software.amazon.awssdk.services.s3.S3Client
 | 
				
			||||||
import java.net.URI
 | 
					import java.net.URI
 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BackupFeature : Feature() {
 | 
					class BackupFeature : Feature() {
 | 
				
			||||||
  private val s3Client by inject<S3Client>()
 | 
					  private val s3Client by inject<S3Client>()
 | 
				
			||||||
@ -46,14 +42,10 @@ class BackupFeature : Feature() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  override fun module() = module {
 | 
					  override fun module() = module {
 | 
				
			||||||
    single {
 | 
					    single {
 | 
				
			||||||
      val configPath = copyDefaultConfig<FoundationCorePlugin>(
 | 
					      plugin.loadConfigurationWithDefault(
 | 
				
			||||||
        plugin.slF4JLogger,
 | 
					        plugin,
 | 
				
			||||||
        plugin.pluginDataPath,
 | 
					 | 
				
			||||||
        "backup.yaml",
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
      return@single Yaml.default.decodeFromStream(
 | 
					 | 
				
			||||||
        BackupConfig.serializer(),
 | 
					        BackupConfig.serializer(),
 | 
				
			||||||
        configPath.inputStream()
 | 
					        "backup.yaml"
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    single {
 | 
					    single {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,5 @@
 | 
				
			|||||||
package gay.pizza.foundation.core.features.gameplay
 | 
					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 gay.pizza.foundation.core.abstraction.Feature
 | 
				
			||||||
import org.bukkit.Bukkit
 | 
					import org.bukkit.Bukkit
 | 
				
			||||||
import org.bukkit.Material
 | 
					import org.bukkit.Material
 | 
				
			||||||
@ -17,21 +14,16 @@ import org.bukkit.event.player.PlayerInteractEntityEvent
 | 
				
			|||||||
import org.bukkit.inventory.ItemStack
 | 
					import org.bukkit.inventory.ItemStack
 | 
				
			||||||
import org.koin.core.component.inject
 | 
					import org.koin.core.component.inject
 | 
				
			||||||
import org.koin.dsl.module
 | 
					import org.koin.dsl.module
 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GameplayFeature : Feature() {
 | 
					class GameplayFeature : Feature() {
 | 
				
			||||||
  private val config by inject<GameplayConfig>()
 | 
					  private val config by inject<GameplayConfig>()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  override fun module() = module {
 | 
					  override fun module() = module {
 | 
				
			||||||
    single {
 | 
					    single {
 | 
				
			||||||
      val configPath = copyDefaultConfig<FoundationCorePlugin>(
 | 
					      plugin.loadConfigurationWithDefault(
 | 
				
			||||||
        plugin.slF4JLogger,
 | 
					        plugin,
 | 
				
			||||||
        plugin.pluginDataPath,
 | 
					 | 
				
			||||||
        "gameplay.yaml",
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
      return@single Yaml.default.decodeFromStream(
 | 
					 | 
				
			||||||
        GameplayConfig.serializer(),
 | 
					        GameplayConfig.serializer(),
 | 
				
			||||||
        configPath.inputStream()
 | 
					        "gameplay.yaml"
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,9 @@
 | 
				
			|||||||
package gay.pizza.foundation.core.features.player
 | 
					package gay.pizza.foundation.core.features.player
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.charleskorn.kaml.Yaml
 | 
					 | 
				
			||||||
import com.google.common.cache.Cache
 | 
					import com.google.common.cache.Cache
 | 
				
			||||||
import com.google.common.cache.CacheBuilder
 | 
					import com.google.common.cache.CacheBuilder
 | 
				
			||||||
import com.google.common.cache.RemovalCause
 | 
					import com.google.common.cache.RemovalCause
 | 
				
			||||||
import gay.pizza.foundation.core.FoundationCorePlugin
 | 
					 | 
				
			||||||
import gay.pizza.foundation.core.abstraction.Feature
 | 
					import gay.pizza.foundation.core.abstraction.Feature
 | 
				
			||||||
import gay.pizza.foundation.shared.copyDefaultConfig
 | 
					 | 
				
			||||||
import net.kyori.adventure.text.Component
 | 
					import net.kyori.adventure.text.Component
 | 
				
			||||||
import org.bukkit.GameMode
 | 
					import org.bukkit.GameMode
 | 
				
			||||||
import org.bukkit.event.EventHandler
 | 
					import org.bukkit.event.EventHandler
 | 
				
			||||||
@ -16,7 +13,6 @@ import org.bukkit.event.player.PlayerMoveEvent
 | 
				
			|||||||
import org.bukkit.event.player.PlayerQuitEvent
 | 
					import org.bukkit.event.player.PlayerQuitEvent
 | 
				
			||||||
import org.koin.core.component.inject
 | 
					import org.koin.core.component.inject
 | 
				
			||||||
import java.time.Duration
 | 
					import java.time.Duration
 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PlayerFeature : Feature() {
 | 
					class PlayerFeature : Feature() {
 | 
				
			||||||
  private val config by inject<PlayerConfig>()
 | 
					  private val config by inject<PlayerConfig>()
 | 
				
			||||||
@ -53,14 +49,10 @@ class PlayerFeature : Feature() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  override fun module() = org.koin.dsl.module {
 | 
					  override fun module() = org.koin.dsl.module {
 | 
				
			||||||
    single {
 | 
					    single {
 | 
				
			||||||
      val configPath = copyDefaultConfig<FoundationCorePlugin>(
 | 
					      plugin.loadConfigurationWithDefault(
 | 
				
			||||||
        plugin.slF4JLogger,
 | 
					        plugin,
 | 
				
			||||||
        plugin.pluginDataPath,
 | 
					 | 
				
			||||||
        "player.yaml",
 | 
					 | 
				
			||||||
      )
 | 
					 | 
				
			||||||
      return@single Yaml.default.decodeFromStream(
 | 
					 | 
				
			||||||
        PlayerConfig.serializer(),
 | 
					        PlayerConfig.serializer(),
 | 
				
			||||||
        configPath.inputStream()
 | 
					        "player.yaml"
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,5 @@
 | 
				
			|||||||
package gay.pizza.foundation.heimdall.plugin
 | 
					package gay.pizza.foundation.heimdall.plugin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.charleskorn.kaml.Yaml
 | 
					 | 
				
			||||||
import com.zaxxer.hikari.HikariConfig
 | 
					import com.zaxxer.hikari.HikariConfig
 | 
				
			||||||
import com.zaxxer.hikari.HikariDataSource
 | 
					import com.zaxxer.hikari.HikariDataSource
 | 
				
			||||||
import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
					import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
				
			||||||
@ -13,12 +12,10 @@ import gay.pizza.foundation.heimdall.plugin.export.ExportAllChunksCommand
 | 
				
			|||||||
import gay.pizza.foundation.heimdall.plugin.load.ImportWorldLoadCommand
 | 
					import gay.pizza.foundation.heimdall.plugin.load.ImportWorldLoadCommand
 | 
				
			||||||
import gay.pizza.foundation.heimdall.plugin.model.HeimdallConfig
 | 
					import gay.pizza.foundation.heimdall.plugin.model.HeimdallConfig
 | 
				
			||||||
import gay.pizza.foundation.shared.PluginMainClass
 | 
					import gay.pizza.foundation.shared.PluginMainClass
 | 
				
			||||||
import gay.pizza.foundation.shared.copyDefaultConfig
 | 
					 | 
				
			||||||
import org.bukkit.event.Listener
 | 
					import org.bukkit.event.Listener
 | 
				
			||||||
import org.jetbrains.exposed.sql.Database
 | 
					import org.jetbrains.exposed.sql.Database
 | 
				
			||||||
import org.postgresql.Driver
 | 
					import org.postgresql.Driver
 | 
				
			||||||
import java.time.Duration
 | 
					import java.time.Duration
 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@PluginMainClass
 | 
					@PluginMainClass
 | 
				
			||||||
class FoundationHeimdallPlugin : BaseFoundationPlugin(), Listener {
 | 
					class FoundationHeimdallPlugin : BaseFoundationPlugin(), Listener {
 | 
				
			||||||
@ -45,12 +42,11 @@ class FoundationHeimdallPlugin : BaseFoundationPlugin(), Listener {
 | 
				
			|||||||
    importWorldLoadCommand.setExecutor(ImportWorldLoadCommand(this))
 | 
					    importWorldLoadCommand.setExecutor(ImportWorldLoadCommand(this))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    val foundation = FoundationCoreLoader.get(server)
 | 
					    val foundation = FoundationCoreLoader.get(server)
 | 
				
			||||||
    val configPath = copyDefaultConfig<FoundationHeimdallPlugin>(
 | 
					    config = loadConfigurationWithDefault(
 | 
				
			||||||
      slF4JLogger,
 | 
					      foundation,
 | 
				
			||||||
      foundation.pluginDataPath,
 | 
					      HeimdallConfig.serializer(),
 | 
				
			||||||
      "heimdall.yaml"
 | 
					      "heimdall.yaml"
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    config = Yaml.default.decodeFromStream(HeimdallConfig.serializer(), configPath.inputStream())
 | 
					 | 
				
			||||||
    if (!config.enabled) {
 | 
					    if (!config.enabled) {
 | 
				
			||||||
      slF4JLogger.info("Heimdall tracking is not enabled.")
 | 
					      slF4JLogger.info("Heimdall tracking is not enabled.")
 | 
				
			||||||
      return
 | 
					      return
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,10 @@
 | 
				
			|||||||
package gay.pizza.foundation.shared
 | 
					package gay.pizza.foundation.shared
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.charleskorn.kaml.Yaml
 | 
				
			||||||
 | 
					import kotlinx.serialization.DeserializationStrategy
 | 
				
			||||||
import org.slf4j.Logger
 | 
					import org.slf4j.Logger
 | 
				
			||||||
import java.nio.file.Path
 | 
					import java.nio.file.Path
 | 
				
			||||||
 | 
					import kotlin.io.path.inputStream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Copy the default configuration from the resource [resourceName] into the directory [targetPath].
 | 
					 * Copy the default configuration from the resource [resourceName] into the directory [targetPath].
 | 
				
			||||||
@ -20,7 +23,6 @@ inline fun <reified T> copyDefaultConfig(log: Logger, targetPath: Path, resource
 | 
				
			|||||||
  val outPath = targetPath.resolve(resourceName)
 | 
					  val outPath = targetPath.resolve(resourceName)
 | 
				
			||||||
  val outFile = outPath.toFile()
 | 
					  val outFile = outPath.toFile()
 | 
				
			||||||
  if (outFile.exists()) {
 | 
					  if (outFile.exists()) {
 | 
				
			||||||
    log.debug("Configuration file already exists.")
 | 
					 | 
				
			||||||
    return outPath
 | 
					    return outPath
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -37,3 +39,13 @@ inline fun <reified T> copyDefaultConfig(log: Logger, targetPath: Path, resource
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  return outPath
 | 
					  return outPath
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline fun <reified T> loadConfigurationWithDefault(
 | 
				
			||||||
 | 
					  log: Logger,
 | 
				
			||||||
 | 
					  deserializer: DeserializationStrategy<T>,
 | 
				
			||||||
 | 
					  pluginConfigDirectoryPath: Path,
 | 
				
			||||||
 | 
					  name: String
 | 
				
			||||||
 | 
					): T {
 | 
				
			||||||
 | 
					  val path = copyDefaultConfig<T>(log, pluginConfigDirectoryPath, name)
 | 
				
			||||||
 | 
					  return Yaml.default.decodeFromStream(deserializer, path.inputStream())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,11 +1,8 @@
 | 
				
			|||||||
package gay.pizza.foundation.tailscale
 | 
					package gay.pizza.foundation.tailscale
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.charleskorn.kaml.Yaml
 | 
					 | 
				
			||||||
import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
					import gay.pizza.foundation.common.BaseFoundationPlugin
 | 
				
			||||||
import gay.pizza.foundation.common.FoundationCoreLoader
 | 
					import gay.pizza.foundation.common.FoundationCoreLoader
 | 
				
			||||||
import gay.pizza.foundation.shared.PluginMainClass
 | 
					import gay.pizza.foundation.shared.PluginMainClass
 | 
				
			||||||
import gay.pizza.foundation.shared.copyDefaultConfig
 | 
					 | 
				
			||||||
import kotlin.io.path.inputStream
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@PluginMainClass
 | 
					@PluginMainClass
 | 
				
			||||||
class FoundationTailscalePlugin : BaseFoundationPlugin() {
 | 
					class FoundationTailscalePlugin : BaseFoundationPlugin() {
 | 
				
			||||||
@ -14,12 +11,11 @@ class FoundationTailscalePlugin : BaseFoundationPlugin() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  override fun onEnable() {
 | 
					  override fun onEnable() {
 | 
				
			||||||
    val foundation = FoundationCoreLoader.get(server)
 | 
					    val foundation = FoundationCoreLoader.get(server)
 | 
				
			||||||
    val configPath = copyDefaultConfig<FoundationTailscalePlugin>(
 | 
					    config = loadConfigurationWithDefault(
 | 
				
			||||||
      slF4JLogger,
 | 
					      foundation,
 | 
				
			||||||
      foundation.pluginDataPath,
 | 
					      TailscaleConfig.serializer(),
 | 
				
			||||||
      "tailscale.yaml"
 | 
					      "tailscale.yaml"
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    config = Yaml.default.decodeFromStream(TailscaleConfig.serializer(), configPath.inputStream())
 | 
					 | 
				
			||||||
    controller = TailscaleController(server, config)
 | 
					    controller = TailscaleController(server, config)
 | 
				
			||||||
    controller.enable()
 | 
					    controller.enable()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user