mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 02:15:34 -04:00
config migration
This commit is contained in:
parent
46e24b0272
commit
f58d9b6f8b
@ -15,9 +15,11 @@ package de.bixilon.minosoft.config
|
|||||||
import com.squareup.moshi.JsonWriter
|
import com.squareup.moshi.JsonWriter
|
||||||
import de.bixilon.minosoft.Minosoft
|
import de.bixilon.minosoft.Minosoft
|
||||||
import de.bixilon.minosoft.config.config.Config
|
import de.bixilon.minosoft.config.config.Config
|
||||||
|
import de.bixilon.minosoft.util.KUtil.nullCast
|
||||||
import de.bixilon.minosoft.util.Util
|
import de.bixilon.minosoft.util.Util
|
||||||
import de.bixilon.minosoft.util.json.JSONSerializer
|
import de.bixilon.minosoft.util.json.JSONSerializer
|
||||||
import de.bixilon.minosoft.util.logging.Log
|
import de.bixilon.minosoft.util.logging.Log
|
||||||
|
import de.bixilon.minosoft.util.nbt.tag.NBTUtil.compoundCast
|
||||||
import okio.Buffer
|
import okio.Buffer
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileWriter
|
import java.io.FileWriter
|
||||||
@ -30,13 +32,24 @@ class Configuration(private val configName: String = StaticConfiguration.CONFIG_
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
config = JSONSerializer.CONFIG_ADAPTER.fromJson(Util.readFile(file.absolutePath))!!
|
val config = JSONSerializer.MAP_ADAPTER.fromJson(Util.readFile(file.absolutePath))!!
|
||||||
|
|
||||||
if (config.general.version > LATEST_CONFIG_VERSION) {
|
var wasMigrated = false
|
||||||
throw ConfigMigrationException(String.format("Configuration was migrated to newer config format (version=${config.general.version}, expected=${LATEST_CONFIG_VERSION}). Downgrading the config file is unsupported!"))
|
let {
|
||||||
|
val configVersion = config["general"]?.compoundCast()?.get("version")?.nullCast<Int>() ?: return@let
|
||||||
|
if (config["general"]?.compoundCast()?.get("version")?.nullCast<Int>() ?: 0 > LATEST_CONFIG_VERSION) {
|
||||||
|
throw ConfigMigrationException("Configuration was migrated to newer config format (version=${configVersion}, expected=${LATEST_CONFIG_VERSION}). Downgrading the config file is unsupported!")
|
||||||
|
}
|
||||||
|
if (configVersion < LATEST_CONFIG_VERSION) {
|
||||||
|
startMigration(configVersion, config)
|
||||||
|
wasMigrated = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (config.general.version < LATEST_CONFIG_VERSION) {
|
|
||||||
migrateConfiguration()
|
this.config = JSONSerializer.CONFIG_ADAPTER.fromJsonValue(config)!!
|
||||||
|
|
||||||
|
if (wasMigrated) {
|
||||||
|
saveToFile()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// no configuration file
|
// no configuration file
|
||||||
@ -79,21 +92,19 @@ class Configuration(private val configName: String = StaticConfiguration.CONFIG_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun migrateConfiguration() {
|
private fun startMigration(configVersion: Int, config: MutableMap<String, Any>) {
|
||||||
Log.info(String.format("Migrating config from version ${config.general.version} to $LATEST_CONFIG_VERSION"))
|
Log.info(String.format("Migrating config from version $configVersion to $LATEST_CONFIG_VERSION"))
|
||||||
for (nextVersion in config.general.version + 1..LATEST_CONFIG_VERSION) {
|
for (nextVersion in configVersion + 1..LATEST_CONFIG_VERSION) {
|
||||||
migrateConfiguration(nextVersion)
|
migrateConfiguration(nextVersion, config)
|
||||||
}
|
}
|
||||||
config.general.version = LATEST_CONFIG_VERSION
|
config["general"]?.compoundCast()?.put("version", LATEST_CONFIG_VERSION)
|
||||||
saveToFile()
|
|
||||||
Log.info("Finished migrating config!")
|
Log.info("Finished migrating config!")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun migrateConfiguration(nextVersion: Int) {
|
private fun migrateConfiguration(nextVersion: Int, config: Map<String, Any>) {
|
||||||
// switch (nextVersion) {
|
when (nextVersion) {
|
||||||
// // ToDo
|
else -> throw ConfigMigrationException("Can not migrate config: Unknown config version $nextVersion")
|
||||||
// default: throw new ConfigMigrationException("Can not migrate config: Unknown config version " + nextVersion);
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -18,7 +18,8 @@ import glm_.vec3.Vec3i
|
|||||||
enum class Axes {
|
enum class Axes {
|
||||||
X,
|
X,
|
||||||
Y,
|
Y,
|
||||||
Z;
|
Z,
|
||||||
|
;
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun byDirection(direction: Directions): Axes {
|
fun byDirection(direction: Directions): Axes {
|
||||||
|
@ -18,7 +18,6 @@ import de.bixilon.minosoft.gui.rendering.hud.nodes.HUDElement
|
|||||||
|
|
||||||
interface HUDRenderBuilder<T : HUDElement> {
|
interface HUDRenderBuilder<T : HUDElement> {
|
||||||
val RESOURCE_LOCATION: ResourceLocation
|
val RESOURCE_LOCATION: ResourceLocation
|
||||||
|
|
||||||
val DEFAULT_PROPERTIES: HUDElementProperties
|
val DEFAULT_PROPERTIES: HUDElementProperties
|
||||||
|
|
||||||
fun build(hudRenderer: HUDRenderer): T
|
fun build(hudRenderer: HUDRenderer): T
|
||||||
|
@ -39,7 +39,8 @@ class ClientActionC2SP(
|
|||||||
enum class ClientActions {
|
enum class ClientActions {
|
||||||
PERFORM_RESPAWN,
|
PERFORM_RESPAWN,
|
||||||
REQUEST_STATISTICS,
|
REQUEST_STATISTICS,
|
||||||
OPEN_INVENTORY;
|
OPEN_INVENTORY,
|
||||||
|
;
|
||||||
|
|
||||||
companion object : ValuesEnum<ClientActions> {
|
companion object : ValuesEnum<ClientActions> {
|
||||||
override val VALUES: Array<ClientActions> = values()
|
override val VALUES: Array<ClientActions> = values()
|
||||||
|
@ -13,7 +13,9 @@
|
|||||||
|
|
||||||
package de.bixilon.minosoft.util.json
|
package de.bixilon.minosoft.util.json
|
||||||
|
|
||||||
|
import com.squareup.moshi.JsonAdapter
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
|
import com.squareup.moshi.Types
|
||||||
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
|
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
|
||||||
import de.bixilon.minosoft.config.config.Config
|
import de.bixilon.minosoft.config.config.Config
|
||||||
import de.bixilon.minosoft.gui.rendering.textures.properties.ImageProperties
|
import de.bixilon.minosoft.gui.rendering.textures.properties.ImageProperties
|
||||||
@ -29,6 +31,7 @@ object JSONSerializer {
|
|||||||
.build()!!
|
.build()!!
|
||||||
|
|
||||||
val CONFIG_ADAPTER = MOSHI.adapter(Config::class.java)!!
|
val CONFIG_ADAPTER = MOSHI.adapter(Config::class.java)!!
|
||||||
|
val MAP_ADAPTER: JsonAdapter<MutableMap<String, Any>> = MOSHI.adapter(Types.newParameterizedType(MutableMap::class.java, String::class.java, Any::class.java))
|
||||||
|
|
||||||
val IMAGE_PROPERTIES_ADAPTER = MOSHI.adapter(ImageProperties::class.java)!!
|
val IMAGE_PROPERTIES_ADAPTER = MOSHI.adapter(ImageProperties::class.java)!!
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user