aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/examplemod/config/PersistentData.kt
diff options
context:
space:
mode:
authorappable <enzospiacitelli@gmail.com>2022-10-11 14:32:32 -0700
committerappable <enzospiacitelli@gmail.com>2022-10-11 14:32:32 -0700
commit363b2426f8d9e45e52c472750c798dcaceb05a88 (patch)
treed50c71d73f4333253ef28f5e53c1a148fc7f8ab5 /src/main/kotlin/com/examplemod/config/PersistentData.kt
downloadAmbientAddons-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.kt35
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