Skip to content

Commit 63bd032

Browse files
committed
HomeConfiguration.kt implemented.
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
1 parent 14412ab commit 63bd032

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.mairwunnx.projectessentials.home.configurations
2+
3+
import com.mairwunnx.projectessentials.core.api.v1.configuration.IConfiguration
4+
import com.mairwunnx.projectessentials.core.api.v1.helpers.jsonInstance
5+
import com.mairwunnx.projectessentials.core.api.v1.helpers.projectConfigDirectory
6+
import net.minecraftforge.fml.server.ServerLifecycleHooks.getCurrentServer
7+
import org.apache.logging.log4j.LogManager
8+
import java.io.File
9+
import java.io.FileNotFoundException
10+
11+
object HomeConfiguration : IConfiguration<HomeConfigurationModel> {
12+
private val logger = LogManager.getLogger()
13+
private var configurationData = HomeConfigurationModel()
14+
15+
override val name = "home"
16+
override val version = 1
17+
override val configuration = take()
18+
override val path by lazy {
19+
projectConfigDirectory + File.separator + getCurrentServer().folderName + File.separator + "homes.json"
20+
}
21+
22+
override fun load() {
23+
try {
24+
val configRaw = File(path).readText()
25+
configurationData = jsonInstance.parse(
26+
HomeConfigurationModel.serializer(), configRaw
27+
)
28+
} catch (ex: FileNotFoundException) {
29+
logger.error("Configuration file ($path) not found!")
30+
logger.warn("The default configuration will be used")
31+
}
32+
}
33+
34+
override fun save() {
35+
File(path).parentFile.mkdirs()
36+
37+
logger.info("Saving configuration `${name}`")
38+
val raw = jsonInstance.stringify(
39+
HomeConfigurationModel.serializer(), configuration
40+
)
41+
try {
42+
File(path).writeText(raw)
43+
} catch (ex: SecurityException) {
44+
logger.error("An error occurred while saving $name configuration", ex)
45+
}
46+
}
47+
48+
override fun take() = configurationData
49+
}

0 commit comments

Comments
 (0)