diff --git a/eco-api/src/main/java/com/willfp/eco/core/data/ExternalDataStore.java b/eco-api/src/main/java/com/willfp/eco/core/data/ExternalDataStore.java index b527d182..e4f5eeaa 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/data/ExternalDataStore.java +++ b/eco-api/src/main/java/com/willfp/eco/core/data/ExternalDataStore.java @@ -4,6 +4,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; +import java.util.function.Supplier; /** * A simple store key-value store for data to be stored outside of plugins. @@ -45,6 +46,39 @@ public final class ExternalDataStore { } } + /** + * Get data from the store. + * + * @param key The key. + * @param clazz The class. + * @param defaultValue The default value. + * @param The type. + * @return The value. + */ + @NotNull + public static T get(@NotNull final String key, + @NotNull final Class clazz, + @NotNull final T defaultValue) { + T value = get(key, clazz); + return value == null ? defaultValue : value; + } + + /** + * Get data from the store. + * + * @param key The key. + * @param clazz The class. + * @param defaultValue The default value. + * @param The type. + * @return The value. + */ + @NotNull + public static T get(@NotNull final String key, + @NotNull final Class clazz, + @NotNull final Supplier defaultValue) { + return get(key, clazz, defaultValue.get()); + } + private ExternalDataStore() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); } diff --git a/eco-api/src/main/kotlin/com/willfp/eco/core/data/ExternalDataStore.kt b/eco-api/src/main/kotlin/com/willfp/eco/core/data/ExternalDataStore.kt index 3a25860b..957c2b10 100644 --- a/eco-api/src/main/kotlin/com/willfp/eco/core/data/ExternalDataStore.kt +++ b/eco-api/src/main/kotlin/com/willfp/eco/core/data/ExternalDataStore.kt @@ -16,3 +16,19 @@ fun writeExternalData( inline fun readExternalData( key: String ): T? = ExternalDataStore.get(key, T::class.java) + +/** + * @see ExternalDataStore.get + */ +inline fun readExternalData( + key: String, + default: T +): T = ExternalDataStore.get(key, T::class.java) ?: default + +/** + * @see ExternalDataStore.get + */ +inline fun readExternalData( + key: String, + default: () -> T +): T = readExternalData(key, default())