diff --git a/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java b/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java index 7b3ceb3e..bc32f8aa 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java +++ b/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java @@ -15,6 +15,7 @@ import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -648,6 +649,32 @@ public interface Config extends Cloneable, PlaceholderInjectable { @Nullable List getSubsectionsOrNull(@NotNull String path); + /** + * Get a big decimal from config. + * + * @param path The key to fetch the value from. + * @return The found value, or 0 if not found. + */ + @NotNull + default BigDecimal getBigDecimal(@NotNull final String path) { + return Objects.requireNonNullElse(getBigDecimalOrNull(path), BigDecimal.ZERO); + } + + /** + * Get a big decimal from config. + * + * @param path The key to fetch the value from. + * @return The found value, or null if not found. + */ + @Nullable + default BigDecimal getBigDecimalOrNull(@NotNull final String path) { + if (this.has(path)) { + return new BigDecimal(this.getString(path)); + } else { + return null; + } + } + /** * Get config type. * 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 5cbf9651..b1868548 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 @@ -21,7 +21,6 @@ import org.jetbrains.exposed.sql.insert import org.jetbrains.exposed.sql.select import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.update -import java.math.BigDecimal import java.util.UUID import java.util.concurrent.Executors import java.util.concurrent.TimeUnit @@ -85,8 +84,7 @@ class MySQLDataHandler( PersistentDataKeyType.BOOLEAN -> data.getBoolOrNull(key.key.toString()) PersistentDataKeyType.STRING_LIST -> data.getStringsOrNull(key.key.toString()) PersistentDataKeyType.CONFIG -> data.getSubsectionOrNull(key.key.toString()) - PersistentDataKeyType.BIG_DECIMAL -> if (data.has(key.key.toString())) - BigDecimal(data.getString(key.key.toString())) else null + PersistentDataKeyType.BIG_DECIMAL -> data.getBigDecimalOrNull(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 ea4c287f..1174799a 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 @@ -5,7 +5,6 @@ import com.willfp.eco.core.data.keys.PersistentDataKeyType import com.willfp.eco.internal.spigot.EcoSpigotPlugin import com.willfp.eco.internal.spigot.data.ProfileHandler import org.bukkit.NamespacedKey -import java.math.BigDecimal import java.util.UUID @Suppress("UNCHECKED_CAST") @@ -28,8 +27,7 @@ class YamlDataHandler( 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? - PersistentDataKeyType.BIG_DECIMAL -> (if (dataYml.has(key.key.toString())) - BigDecimal(dataYml.getString(key.key.toString())) else null) as T? + PersistentDataKeyType.BIG_DECIMAL -> dataYml.getBigDecimalOrNull("player.$uuid.${key.key}") as T? else -> null }