From 2dbafe06a4ab82b4476db3f0f33ba46143e2274e Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 15 Oct 2021 10:00:24 +0100 Subject: [PATCH] Cleaned up data storage --- .../com/willfp/ecoskills/EcoSkillsPlayer.kt | 8 +++--- .../ecoskills/data/SavedPlayerNameListener.kt | 2 +- .../ecoskills/data/storage/DataHandler.kt | 5 +--- .../data/storage/MySQLDataHandler.kt | 16 ++---------- .../ecoskills/data/storage/PlayerProfile.kt | 25 +++++++------------ .../ecoskills/data/storage/YamlDataHandler.kt | 16 +++++------- 6 files changed, 23 insertions(+), 49 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt index 5741185..55a9a9b 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/EcoSkillsPlayer.kt @@ -95,7 +95,7 @@ fun Player.giveSkillExperience(skill: Skill, experience: Double, noMultiply: Boo } fun OfflinePlayer.getSkillLevel(skill: Skill): Int { - return profile.readInt(skill.id) + return profile.read(skill.id, 0) } fun OfflinePlayer.setSkillLevel(skill: Skill, level: Int) { @@ -111,7 +111,7 @@ fun OfflinePlayer.getSkillProgressRequired(skill: Skill): Int { } fun OfflinePlayer.getSkillProgress(skill: Skill): Double { - return profile.readDouble(skill.xpKey.key) + return profile.read(skill.xpKey.key, 0.0) } fun OfflinePlayer.setSkillProgress(skill: Skill, level: Double) { @@ -119,7 +119,7 @@ fun OfflinePlayer.setSkillProgress(skill: Skill, level: Double) { } fun OfflinePlayer.getEffectLevel(effect: Effect): Int { - return profile.readInt(effect.id) + return profile.read(effect.id, 0) } fun OfflinePlayer.setEffectLevel(effect: Effect, level: Int) { @@ -145,7 +145,7 @@ fun Player.getBonusStatLevel(stat: Stat): Int { } fun OfflinePlayer.getBaseStatLevel(stat: Stat): Int { - return profile.readInt(stat.id) + return profile.read(stat.id, 0) } fun Player.setStatLevel(stat: Stat, level: Int) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SavedPlayerNameListener.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SavedPlayerNameListener.kt index c821b2e..92b9b68 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SavedPlayerNameListener.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/SavedPlayerNameListener.kt @@ -30,7 +30,7 @@ var OfflinePlayer.savedDisplayName: String return this.displayName } - return profile.readString("name", this.name ?: "Unknown Player") + return profile.read("name", this.name ?: "Unknown Player") } set(value) { return profile.write("name", value) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/DataHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/DataHandler.kt index b5576c7..b08befa 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/DataHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/DataHandler.kt @@ -6,8 +6,5 @@ interface DataHandler { fun save() fun write(uuid: UUID, key: String, value: T) - - fun readInt(uuid: UUID, key: String): Int - fun readDouble(uuid: UUID, key: String): Double - fun readString(uuid: UUID, key: String, default: String = ""): String + fun read(uuid: UUID, key: String, default: T): T } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/MySQLDataHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/MySQLDataHandler.kt index 1206815..99784f8 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/MySQLDataHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/MySQLDataHandler.kt @@ -61,13 +61,13 @@ class MySQLDataHandler( } } val column: Column = Players.columns.stream().filter { it.name == key }.findFirst().get() as Column - Players.update ({ Players.id eq uuid }) { + Players.update({ Players.id eq uuid }) { it[column] = value } } } - private inline fun read(uuid: UUID, key: String, default: T): T { + override fun read(uuid: UUID, key: String, default: T): T { var value = default transaction { val player = Players.select { Players.id eq uuid }.firstOrNull() ?: return@transaction @@ -76,18 +76,6 @@ class MySQLDataHandler( return value } - override fun readInt(uuid: UUID, key: String): Int { - return read(uuid, key, 0) - } - - override fun readDouble(uuid: UUID, key: String): Double { - return read(uuid, key, 0.0) - } - - override fun readString(uuid: UUID, key: String, default: String): String { - return read(uuid, key, default) - } - object Players : UUIDTable("EcoSkills_Players") { override val id: Column> = uuid("uuid") .entityId() diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/PlayerProfile.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/PlayerProfile.kt index 12ac8fb..c2a5d3a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/PlayerProfile.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/PlayerProfile.kt @@ -8,6 +8,7 @@ import com.willfp.ecoskills.stats.Stats import org.bukkit.OfflinePlayer import java.util.* +@Suppress("UNCHECKED_CAST") class PlayerProfile private constructor( private val data: MutableMap ) { @@ -15,16 +16,8 @@ class PlayerProfile private constructor( data[key] = value } - fun readInt(key: String): Int { - return data[key] as Int? ?: 0 - } - - fun readDouble(key: String): Double { - return data[key] as Double? ?: 0.0 - } - - fun readString(key: String, default: String): String { - return data[key] as String? ?: default + fun read(key: String, default: T): T { + return data[key] as T? ?: default } companion object { @@ -41,9 +34,9 @@ class PlayerProfile private constructor( val data = mutableMapOf() for ((key, type) in keys) { when (type) { - Type.INT -> data[key] = handler.readInt(uuid, key) - Type.DOUBLE -> data[key] = handler.readDouble(uuid, key) - Type.STRING -> data[key] = handler.readString(uuid, key) + Type.INT -> data[key] = handler.read(uuid, key, 0) + Type.DOUBLE -> data[key] = handler.read(uuid, key, 0.0) + Type.STRING -> data[key] = handler.read(uuid, key, "Unknown") } } @@ -57,9 +50,9 @@ class PlayerProfile private constructor( for ((uuid, profile) in loaded) { for ((key, type) in keys) { when (type) { - Type.INT -> handler.write(uuid, key, profile.readInt(key)) - Type.DOUBLE -> handler.write(uuid, key, profile.readDouble(key)) - Type.STRING -> handler.write(uuid, key, profile.readString(key, "Unknown Value")) + Type.INT -> handler.write(uuid, key, profile.read(key, 0)) + Type.DOUBLE -> handler.write(uuid, key, profile.read(key, 0.0)) + Type.STRING -> handler.write(uuid, key, profile.read(key, "Unknown Value")) } } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/YamlDataHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/YamlDataHandler.kt index 6457bf3..3d86ea9 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/YamlDataHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/data/storage/YamlDataHandler.kt @@ -18,16 +18,12 @@ class YamlDataHandler( dataYml.set("player.$uuid.$key", value) } - override fun readInt(uuid: UUID, key: String): Int { - return dataYml.getInt("player.$uuid.$key", 0) - } - - override fun readDouble(uuid: UUID, key: String): Double { - return dataYml.getDoubleOrNull("player.$uuid.$key") ?: 0.0 - } - - override fun readString(uuid: UUID, key: String, default: String): String { - return dataYml.getStringOrNull("player.$uuid.$key") ?: default + override fun read(uuid: UUID, key: String, default: T): T { + return if (dataYml.has("player.$uuid.$key")) { + dataYml.get("player.$uuid.$key") as T + } else { + default + } } class DataYml(