9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-02 05:46:57 +00:00

Cleaned up data storage

This commit is contained in:
Auxilor
2021-10-15 10:00:24 +01:00
parent ebddfbdf5d
commit 2dbafe06a4
6 changed files with 23 additions and 49 deletions

View File

@@ -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) {

View File

@@ -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)

View File

@@ -6,8 +6,5 @@ interface DataHandler {
fun save()
fun <T> 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 <T : Any> read(uuid: UUID, key: String, default: T): T
}

View File

@@ -61,13 +61,13 @@ class MySQLDataHandler(
}
}
val column: Column<T> = Players.columns.stream().filter { it.name == key }.findFirst().get() as Column<T>
Players.update ({ Players.id eq uuid }) {
Players.update({ Players.id eq uuid }) {
it[column] = value
}
}
}
private inline fun <reified T> read(uuid: UUID, key: String, default: T): T {
override fun <T> 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<EntityID<UUID>> = uuid("uuid")
.entityId()

View File

@@ -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<String, Any>
) {
@@ -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 <T : Any> 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<String, Any>()
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"))
}
}
}

View File

@@ -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 <T> 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(