From dcbbbc9b8d6a8a40421e225170b7daae971831cf Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 8 Jun 2026 14:32:01 +0200 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9C=A8=20feat(config):=20add=20isInitial?= =?UTF-8?q?ized=20method=20to=20configuration=20classes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - introduce isInitialized method to check if the config has been loaded from disk - update SpongeJsonConfigClass and SpongeYmlConfigClass to implement the new method --- .../surf/api/core/config/SpongeConfigClass.kt | 5 +++++ .../api/core/config/SpongeJsonConfigClass.kt | 20 ++++++++++++------- .../api/core/config/SpongeYmlConfigClass.kt | 20 ++++++++++++------- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeConfigClass.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeConfigClass.kt index af5283151..4bed8ac6f 100644 --- a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeConfigClass.kt +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeConfigClass.kt @@ -78,6 +78,11 @@ sealed class SpongeConfigClass( */ abstract val manager: SpongeConfigManager + /** + * Whether the config has been initialized and loaded from disk. + */ + abstract fun isInitialized(): Boolean + /** * Registers a migration for the given target [version]. * diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeJsonConfigClass.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeJsonConfigClass.kt index 7812f9e6e..909faf1d0 100644 --- a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeJsonConfigClass.kt +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeJsonConfigClass.kt @@ -33,13 +33,7 @@ abstract class SpongeJsonConfigClass( configClass: Class, configFolder: Path, fileName: String ) : SpongeConfigClass(configClass, configFolder, fileName) { - /** - * JSON-backed configuration manager for this config type. - * - * The manager is created using [SurfConfigApi.createSpongeJsonConfigManager] - * with [configClass], [configFolder], [fileName] and [migrationBuilder]. - */ - override val manager by lazy { + private val managerLazy = lazy { surfConfigApi.createSpongeJsonConfigManager( configClass, configFolder, @@ -47,4 +41,16 @@ abstract class SpongeJsonConfigClass( migrationBuilder ) } + + /** + * JSON-backed configuration manager for this config type. + * + * The manager is created using [SurfConfigApi.createSpongeJsonConfigManager] + * with [configClass], [configFolder], [fileName] and [migrationBuilder]. + */ + final override val manager by managerLazy + + final override fun isInitialized(): Boolean { + return managerLazy.isInitialized() + } } \ No newline at end of file diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeYmlConfigClass.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeYmlConfigClass.kt index bd87603a5..6555d45d6 100644 --- a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeYmlConfigClass.kt +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/config/SpongeYmlConfigClass.kt @@ -33,13 +33,7 @@ abstract class SpongeYmlConfigClass( configClass: Class, configFolder: Path, fileName: String ) : SpongeConfigClass(configClass, configFolder, fileName) { - /** - * YAML-backed configuration manager for this config type. - * - * The manager is created using [SurfConfigApi.createSpongeYmlConfigManager] - * with [configClass], [configFolder], [fileName] and [migrationBuilder]. - */ - override val manager by lazy { + private val managerLazy = lazy { surfConfigApi.createSpongeYmlConfigManager( configClass, configFolder, @@ -47,4 +41,16 @@ abstract class SpongeYmlConfigClass( migrationBuilder ) } + + /** + * YAML-backed configuration manager for this config type. + * + * The manager is created using [SurfConfigApi.createSpongeYmlConfigManager] + * with [configClass], [configFolder], [fileName] and [migrationBuilder]. + */ + final override val manager by managerLazy + + final override fun isInitialized(): Boolean { + return managerLazy.isInitialized() + } } \ No newline at end of file From e0982207977430d12cb411a877e0c329102288a9 Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 8 Jun 2026 14:32:21 +0200 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=A7=20chore(abi):=20update=20api?= =?UTF-8?q?=20dump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- surf-api-core/surf-api-core/api/surf-api-core.api | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/surf-api-core/surf-api-core/api/surf-api-core.api b/surf-api-core/surf-api-core/api/surf-api-core.api index 990b536d5..ef6c3960b 100644 --- a/surf-api-core/surf-api-core/api/surf-api-core.api +++ b/surf-api-core/surf-api-core/api/surf-api-core.api @@ -150,6 +150,7 @@ public abstract class dev/slne/surf/api/core/config/SpongeConfigClass { public abstract fun getManager ()Ldev/slne/surf/api/core/config/manager/SpongeConfigManager; protected final fun getMigrationBuilder ()Ldev/slne/surf/api/core/config/migration/ConfigMigrationBuilder; public final fun init ()V + public abstract fun isInitialized ()Z protected final fun migration (ILdev/slne/surf/api/core/config/migration/ConfigMigration;)V protected final fun migration (ILkotlin/jvm/functions/Function1;)V public final fun reloadFromFile ()Ljava/lang/Object; @@ -159,12 +160,14 @@ public abstract class dev/slne/surf/api/core/config/SpongeConfigClass { public abstract class dev/slne/surf/api/core/config/SpongeJsonConfigClass : dev/slne/surf/api/core/config/SpongeConfigClass { public fun (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V - public fun getManager ()Ldev/slne/surf/api/core/config/manager/SpongeConfigManager; + public final fun getManager ()Ldev/slne/surf/api/core/config/manager/SpongeConfigManager; + public final fun isInitialized ()Z } public abstract class dev/slne/surf/api/core/config/SpongeYmlConfigClass : dev/slne/surf/api/core/config/SpongeConfigClass { public fun (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V - public fun getManager ()Ldev/slne/surf/api/core/config/manager/SpongeConfigManager; + public final fun getManager ()Ldev/slne/surf/api/core/config/manager/SpongeConfigManager; + public final fun isInitialized ()Z } public abstract interface class dev/slne/surf/api/core/config/SurfConfigApi { From 4ec0dd8860b0a23e7bfb5ec52ca9f6b8173c699f Mon Sep 17 00:00:00 2001 From: twisti-dev <76837088+twisti-dev@users.noreply.github.com> Date: Mon, 8 Jun 2026 14:32:34 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=94=A7=20chore:=20update=20version=20?= =?UTF-8?q?to=203.19.0=20in=20gradle.properties?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 74ecc98a3..2fb28085c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.1.2 group=dev.slne.surf.api -version=3.18.0 +version=3.19.0 relocationPrefix=dev.slne.surf.api.libs snapshot=false