diff options
author | appable <enzospiacitelli@gmail.com> | 2022-10-11 14:32:32 -0700 |
---|---|---|
committer | appable <enzospiacitelli@gmail.com> | 2022-10-11 14:32:32 -0700 |
commit | 363b2426f8d9e45e52c472750c798dcaceb05a88 (patch) | |
tree | d50c71d73f4333253ef28f5e53c1a148fc7f8ab5 /src/main/kotlin/com/examplemod/config/PersistentData.kt | |
download | AmbientAddons-363b2426f8d9e45e52c472750c798dcaceb05a88.tar.gz AmbientAddons-363b2426f8d9e45e52c472750c798dcaceb05a88.tar.bz2 AmbientAddons-363b2426f8d9e45e52c472750c798dcaceb05a88.zip |
Initial commit
Diffstat (limited to 'src/main/kotlin/com/examplemod/config/PersistentData.kt')
-rw-r--r-- | src/main/kotlin/com/examplemod/config/PersistentData.kt | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/main/kotlin/com/examplemod/config/PersistentData.kt b/src/main/kotlin/com/examplemod/config/PersistentData.kt new file mode 100644 index 0000000..58e0ac0 --- /dev/null +++ b/src/main/kotlin/com/examplemod/config/PersistentData.kt @@ -0,0 +1,35 @@ +package com.examplemod.config + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.Json +import java.io.File +import kotlinx.serialization.encodeToString +import kotlinx.serialization.decodeFromString + +@Serializable +data class PersistentData( + var exampleData: Map<String, String> = mapOf("key1" to "entry1"), + var moreExampleData: Int = 5 +) { + + fun save() { + configFile.writeText(Json.encodeToString(this)) + } + + companion object { + private val configFile: File = File(ExampleMod.configDirectory,"data.json") + + fun load(): PersistentData { + val data = if (!configFile.exists()) { + configFile.createNewFile() + PersistentData() + } else configFile.runCatching { + Json.decodeFromString<PersistentData>(this.readText()) + }.getOrNull() ?: PersistentData() + return data.apply { + this.save() + } + } + } +}
\ No newline at end of file |