diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-22 16:44:32 +0200 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-22 16:44:32 +0200 |
commit | 8a0a77b8ba4a2e160558809b592e4bc393e7c997 (patch) | |
tree | edc3fef745ea7a06723a12d017a2db3f0afaefd9 /src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt | |
parent | 0aa8b1fa9052d67664a503a3f78d90c4b64b03b7 (diff) |
Successfully connecting to h2 database
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt b/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt index 5ffce7c..43ee65b 100644 --- a/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt +++ b/src/main/kotlin/io/dico/parcels2/ParcelsPlugin.kt @@ -1,15 +1,60 @@ package io.dico.parcels2 +import io.dico.parcels2.storage.Storage +import io.dico.parcels2.storage.yamlObjectMapper +import io.dico.parcels2.util.tryCreate +import org.bukkit.Bukkit import org.bukkit.plugin.java.JavaPlugin import org.slf4j.LoggerFactory +import java.io.File +import java.util.logging.Level val logger = LoggerFactory.getLogger("ParcelsPlugin") +private inline val plogger get() = logger + class ParcelsPlugin : JavaPlugin() { + lateinit var optionsFile: File + lateinit var options: Options + lateinit var worlds: Worlds + lateinit var storage: Storage override fun onEnable() { - super.onEnable() + if (!init()) { + Bukkit.getPluginManager().disablePlugin(this) + } + } + + private fun init(): Boolean { + optionsFile = File(dataFolder, "options.yml") + options = Options() + worlds = Worlds() + + try { + if (optionsFile.exists()) { + yamlObjectMapper.readerForUpdating(options).readValue<Options>(optionsFile) + } else if (optionsFile.tryCreate()) { + options.addWorld("plotworld", WorldOptions()) + yamlObjectMapper.writeValue(optionsFile, options) + } else { + plogger.error("Failed to save options file ${optionsFile.canonicalPath}") + return false + } + + try { + storage = options.storage.newStorageInstance() + } catch (ex: Exception) { + plogger.error("Failed to connect to database", ex) + return false + } + + worlds.loadWorlds(options) + } catch (ex: Exception) { + plogger.error("Error loading options", ex) + return false + } + return true } }
\ No newline at end of file |