diff --git a/eco-api/src/main/java/com/willfp/eco/core/data/keys/PersistentDataKeyType.java b/eco-api/src/main/java/com/willfp/eco/core/data/keys/PersistentDataKeyType.java index 4c4aa140..8c3e089a 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/data/keys/PersistentDataKeyType.java +++ b/eco-api/src/main/java/com/willfp/eco/core/data/keys/PersistentDataKeyType.java @@ -1,5 +1,6 @@ package com.willfp.eco.core.data.keys; +import com.willfp.eco.core.config.interfaces.Config; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -43,6 +44,11 @@ public final class PersistentDataKeyType { */ public static final PersistentDataKeyType> STRING_LIST = new PersistentDataKeyType<>(null, "STRING_LIST"); + /** + * Config. + */ + public static final PersistentDataKeyType CONFIG = new PersistentDataKeyType<>(Config.class, "CONFIG"); + /** * The class of the type. */ diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/KeyRegistry.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/KeyRegistry.kt index c96afb3e..90bce1b3 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/KeyRegistry.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/KeyRegistry.kt @@ -1,5 +1,6 @@ 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.PersistentDataKeyType import org.bukkit.NamespacedKey @@ -40,6 +41,9 @@ object KeyRegistry { PersistentDataKeyType.STRING_LIST -> if (default !is List<*> || default.firstOrNull() !is String?) { 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!") } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/LegacyMySQLDataHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/LegacyMySQLDataHandler.kt index 5b8aea8b..7c7ba1e5 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/LegacyMySQLDataHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/LegacyMySQLDataHandler.kt @@ -216,26 +216,31 @@ private class ImplementedMySQLHandler( when (key.type) { PersistentDataKeyType.INT -> registerColumn(key.key.toString(), IntegerColumnType()) .default(key.defaultValue as Int) + PersistentDataKeyType.DOUBLE -> registerColumn( key.key.toString(), DoubleColumnType() - ) - .default(key.defaultValue as Double) + ).default(key.defaultValue as Double) + PersistentDataKeyType.BOOLEAN -> registerColumn( key.key.toString(), BooleanColumnType() - ) - .default(key.defaultValue as Boolean) + ).default(key.defaultValue as Boolean) + PersistentDataKeyType.STRING -> registerColumn( key.key.toString(), VarCharColumnType(512) - ) - .default(key.defaultValue as String) + ).default(key.defaultValue as String) + PersistentDataKeyType.STRING_LIST -> registerColumn( key.key.toString(), VarCharColumnType(8192) ).default(PersistentDataKeyType.STRING_LIST.constrainSQLTypes(key.defaultValue as List) as String) + PersistentDataKeyType.CONFIG -> throw IllegalArgumentException( + "Config Persistent Data Keys are not supported by the legacy MySQL handler!" + ) + else -> throw NullPointerException("Null value found!") } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/MySQLDataHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/MySQLDataHandler.kt index 1b72eae7..f207a438 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/MySQLDataHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/MySQLDataHandler.kt @@ -82,6 +82,7 @@ class MySQLDataHandler( PersistentDataKeyType.STRING -> data.getStringOrNull(key.key.toString()) PersistentDataKeyType.BOOLEAN -> data.getBoolOrNull(key.key.toString()) PersistentDataKeyType.STRING_LIST -> data.getStringsOrNull(key.key.toString()) + PersistentDataKeyType.CONFIG -> data.getSubsectionOrNull(key.key.toString()) else -> null } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/YamlDataHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/YamlDataHandler.kt index 37d528a6..5979e186 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/YamlDataHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/internal/spigot/data/storage/YamlDataHandler.kt @@ -26,6 +26,7 @@ class YamlDataHandler( PersistentDataKeyType.STRING -> dataYml.getStringOrNull("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.CONFIG -> dataYml.getSubsectionOrNull("player.$uuid.${key.key}") as T? else -> null }