Added PersistentDataKeyType#CONFIG

This commit is contained in:
Auxilor
2022-10-02 02:17:42 +01:00
parent 13b3e1e440
commit 3e325697e7
5 changed files with 23 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
package com.willfp.eco.core.data.keys; package com.willfp.eco.core.data.keys;
import com.willfp.eco.core.config.interfaces.Config;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -43,6 +44,11 @@ public final class PersistentDataKeyType<T> {
*/ */
public static final PersistentDataKeyType<List<String>> STRING_LIST = new PersistentDataKeyType<>(null, "STRING_LIST"); public static final PersistentDataKeyType<List<String>> STRING_LIST = new PersistentDataKeyType<>(null, "STRING_LIST");
/**
* Config.
*/
public static final PersistentDataKeyType<Config> CONFIG = new PersistentDataKeyType<>(Config.class, "CONFIG");
/** /**
* The class of the type. * The class of the type.
*/ */

View File

@@ -1,5 +1,6 @@
package com.willfp.eco.internal.spigot.data package com.willfp.eco.internal.spigot.data
import com.willfp.eco.core.config.interfaces.Config
import com.willfp.eco.core.data.keys.PersistentDataKey import com.willfp.eco.core.data.keys.PersistentDataKey
import com.willfp.eco.core.data.keys.PersistentDataKeyType import com.willfp.eco.core.data.keys.PersistentDataKeyType
import org.bukkit.NamespacedKey import org.bukkit.NamespacedKey
@@ -40,6 +41,9 @@ object KeyRegistry {
PersistentDataKeyType.STRING_LIST -> if (default !is List<*> || default.firstOrNull() !is String?) { PersistentDataKeyType.STRING_LIST -> if (default !is List<*> || default.firstOrNull() !is String?) {
throw IllegalArgumentException("Invalid Data Type! Should be String List") throw IllegalArgumentException("Invalid Data Type! Should be String List")
} }
PersistentDataKeyType.CONFIG -> if (default !is Config) {
throw IllegalArgumentException("Invalid Data Type! Should be Config")
}
else -> throw NullPointerException("Null value found!") else -> throw NullPointerException("Null value found!")
} }

View File

@@ -216,26 +216,31 @@ private class ImplementedMySQLHandler(
when (key.type) { when (key.type) {
PersistentDataKeyType.INT -> registerColumn<Int>(key.key.toString(), IntegerColumnType()) PersistentDataKeyType.INT -> registerColumn<Int>(key.key.toString(), IntegerColumnType())
.default(key.defaultValue as Int) .default(key.defaultValue as Int)
PersistentDataKeyType.DOUBLE -> registerColumn<Double>( PersistentDataKeyType.DOUBLE -> registerColumn<Double>(
key.key.toString(), key.key.toString(),
DoubleColumnType() DoubleColumnType()
) ).default(key.defaultValue as Double)
.default(key.defaultValue as Double)
PersistentDataKeyType.BOOLEAN -> registerColumn<Boolean>( PersistentDataKeyType.BOOLEAN -> registerColumn<Boolean>(
key.key.toString(), key.key.toString(),
BooleanColumnType() BooleanColumnType()
) ).default(key.defaultValue as Boolean)
.default(key.defaultValue as Boolean)
PersistentDataKeyType.STRING -> registerColumn<String>( PersistentDataKeyType.STRING -> registerColumn<String>(
key.key.toString(), key.key.toString(),
VarCharColumnType(512) VarCharColumnType(512)
) ).default(key.defaultValue as String)
.default(key.defaultValue as String)
PersistentDataKeyType.STRING_LIST -> registerColumn<String>( PersistentDataKeyType.STRING_LIST -> registerColumn<String>(
key.key.toString(), key.key.toString(),
VarCharColumnType(8192) VarCharColumnType(8192)
).default(PersistentDataKeyType.STRING_LIST.constrainSQLTypes(key.defaultValue as List<String>) as String) ).default(PersistentDataKeyType.STRING_LIST.constrainSQLTypes(key.defaultValue as List<String>) as String)
PersistentDataKeyType.CONFIG -> throw IllegalArgumentException(
"Config Persistent Data Keys are not supported by the legacy MySQL handler!"
)
else -> throw NullPointerException("Null value found!") else -> throw NullPointerException("Null value found!")
} }
} }

View File

@@ -82,6 +82,7 @@ class MySQLDataHandler(
PersistentDataKeyType.STRING -> data.getStringOrNull(key.key.toString()) PersistentDataKeyType.STRING -> data.getStringOrNull(key.key.toString())
PersistentDataKeyType.BOOLEAN -> data.getBoolOrNull(key.key.toString()) PersistentDataKeyType.BOOLEAN -> data.getBoolOrNull(key.key.toString())
PersistentDataKeyType.STRING_LIST -> data.getStringsOrNull(key.key.toString()) PersistentDataKeyType.STRING_LIST -> data.getStringsOrNull(key.key.toString())
PersistentDataKeyType.CONFIG -> data.getSubsectionOrNull(key.key.toString())
else -> null else -> null
} }

View File

@@ -26,6 +26,7 @@ class YamlDataHandler(
PersistentDataKeyType.STRING -> dataYml.getStringOrNull("player.$uuid.${key.key}") as T? PersistentDataKeyType.STRING -> dataYml.getStringOrNull("player.$uuid.${key.key}") as T?
PersistentDataKeyType.BOOLEAN -> dataYml.getBoolOrNull("player.$uuid.${key.key}") as T? PersistentDataKeyType.BOOLEAN -> dataYml.getBoolOrNull("player.$uuid.${key.key}") as T?
PersistentDataKeyType.STRING_LIST -> dataYml.getStringsOrNull("player.$uuid.${key.key}") as T? PersistentDataKeyType.STRING_LIST -> dataYml.getStringsOrNull("player.$uuid.${key.key}") as T?
PersistentDataKeyType.CONFIG -> dataYml.getSubsectionOrNull("player.$uuid.${key.key}") as T?
else -> null else -> null
} }