Skip to content

Commit 65d54d1

Browse files
committed
feat: refactor Sponge configuration classes and add ModernTestConfig example
- Updated `SpongeYmlConfigClass` and `SpongeJsonConfigClass` constructors to accept `configFolder` and `fileName` as parameters. - Adjusted `SpongeConfigClass` to make `configFolder` and `fileName` non-abstract. - Added new `ModernTestConfig` class with example usage and randomization functionality.
1 parent 83b47b1 commit 65d54d1

File tree

8 files changed

+68
-27
lines changed

8 files changed

+68
-27
lines changed

surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5975,25 +5975,25 @@ public abstract interface annotation class dev/slne/surf/surfapi/core/api/config
59755975
}
59765976

59775977
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
5978-
public synthetic fun <init> (Ljava/lang/Class;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
5978+
public synthetic fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
59795979
public final fun edit (ZLkotlin/jvm/functions/Function1;)V
59805980
public static synthetic fun edit$default (Ldev/slne/surf/surfapi/core/api/config/SpongeConfigClass;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
59815981
public final fun getConfig ()Ljava/lang/Object;
5982-
protected abstract fun getConfigFolder ()Ljava/nio/file/Path;
5983-
protected abstract fun getFileName ()Ljava/lang/String;
5982+
protected final fun getConfigFolder ()Ljava/nio/file/Path;
5983+
protected final fun getFileName ()Ljava/lang/String;
59845984
public abstract fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
59855985
public final fun init ()V
59865986
public final fun reloadFromFile ()Ljava/lang/Object;
59875987
public final fun save ()V
59885988
}
59895989

59905990
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeJsonConfigClass : dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
5991-
public fun <init> (Ljava/lang/Class;)V
5991+
public fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V
59925992
public fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
59935993
}
59945994

59955995
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeYmlConfigClass : dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
5996-
public fun <init> (Ljava/lang/Class;)V
5996+
public fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V
59975997
public fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
59985998
}
59995999

surf-api-bukkit/surf-api-bukkit-plugin-test/src/main/java/dev/slne/surf/surfapi/bukkit/test/BukkitPluginMain.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import dev.slne.surf.surfapi.bukkit.test.command.SurfApiTestCommand;
77
import dev.slne.surf.surfapi.bukkit.test.command.subcommands.inventory.TestInventoryView;
88
import dev.slne.surf.surfapi.bukkit.test.command.subcommands.reflection.Reflection;
9+
import dev.slne.surf.surfapi.bukkit.test.config.ModernTestConfig;
910
import dev.slne.surf.surfapi.bukkit.test.listener.ChatListener;
1011
import org.bukkit.plugin.java.JavaPlugin;
1112
import org.jetbrains.annotations.NotNull;
@@ -19,6 +20,9 @@ public class BukkitPluginMain extends JavaPlugin {
1920

2021
@Override
2122
public void onLoad() {
23+
ModernTestConfig.Companion.init();
24+
ModernTestConfig.Companion.randomise();
25+
2226
SurfBukkitPacketListenerApi.Companion.getInstance().registerListeners(new ChatListener());
2327
InventoryFrameworkExtensions.register(TestInventoryView.INSTANCE);
2428
// TestConfig config = SurfCore#Api.getCore()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package dev.slne.surf.surfapi.bukkit.test.config
2+
3+
import dev.slne.surf.surfapi.bukkit.test.BukkitPluginMain
4+
import dev.slne.surf.surfapi.core.api.config.SpongeYmlConfigClass
5+
import org.spongepowered.configurate.objectmapping.ConfigSerializable
6+
7+
@ConfigSerializable
8+
data class ModernTestConfig(
9+
var message: String = "Hello from Modern Config!",
10+
var number: Int = 42,
11+
var enabled: Boolean = true
12+
) {
13+
companion object : SpongeYmlConfigClass<ModernTestConfig>(
14+
ModernTestConfig::class.java,
15+
BukkitPluginMain.getInstance().dataPath,
16+
"modern-test-config.yml"
17+
) {
18+
fun randomise() = edit {
19+
message = "Random Message ${Math.random()}"
20+
number = (Math.random() * 100).toInt()
21+
enabled = Math.random() > 0.5
22+
}
23+
}
24+
}

surf-api-core/surf-api-core-api/api/surf-api-core-api.api

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -602,25 +602,25 @@ public abstract interface annotation class dev/slne/surf/surfapi/core/api/config
602602
}
603603

604604
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
605-
public synthetic fun <init> (Ljava/lang/Class;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
605+
public synthetic fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
606606
public final fun edit (ZLkotlin/jvm/functions/Function1;)V
607607
public static synthetic fun edit$default (Ldev/slne/surf/surfapi/core/api/config/SpongeConfigClass;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
608608
public final fun getConfig ()Ljava/lang/Object;
609-
protected abstract fun getConfigFolder ()Ljava/nio/file/Path;
610-
protected abstract fun getFileName ()Ljava/lang/String;
609+
protected final fun getConfigFolder ()Ljava/nio/file/Path;
610+
protected final fun getFileName ()Ljava/lang/String;
611611
public abstract fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
612612
public final fun init ()V
613613
public final fun reloadFromFile ()Ljava/lang/Object;
614614
public final fun save ()V
615615
}
616616

617617
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeJsonConfigClass : dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
618-
public fun <init> (Ljava/lang/Class;)V
618+
public fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V
619619
public fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
620620
}
621621

622622
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeYmlConfigClass : dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
623-
public fun <init> (Ljava/lang/Class;)V
623+
public fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V
624624
public fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
625625
}
626626

surf-api-core/surf-api-core-api/src/main/kotlin/dev/slne/surf/surfapi/core/api/config/SpongeConfigClass.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,20 @@ import java.nio.file.Path
2020
* @param configClass the Java class of [C], used by underlying config frameworks
2121
* to create and map configuration instances.
2222
*/
23-
sealed class SpongeConfigClass<C>(configClass: Class<C>) {
23+
sealed class SpongeConfigClass<C>(
24+
configClass: Class<C>,
2425
/**
2526
* Folder where the configuration file is stored.
2627
*
2728
* Implementations should point this to a plugin- or module-specific config directory.
2829
*/
29-
protected abstract val configFolder: Path
30-
30+
protected val configFolder: Path,
3131
/**
3232
* The name of the configuration file, including its extension
3333
* (for example `settings.yml` or `settings.json`).
3434
*/
35-
protected abstract val fileName: String
35+
protected val fileName: String
36+
) {
3637

3738
/**
3839
* The underlying configuration manager responsible for loading, saving,

surf-api-core/surf-api-core-api/src/main/kotlin/dev/slne/surf/surfapi/core/api/config/SpongeJsonConfigClass.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.slne.surf.surfapi.core.api.config
22

3+
import java.nio.file.Path
4+
35
/**
46
* Convenience base class for JSON-backed Sponge configuration classes.
57
*
@@ -12,17 +14,21 @@ package dev.slne.surf.surfapi.core.api.config
1214
* data class MyJsonConfig(
1315
* var someField: String = "value"
1416
* ) {
15-
* companion object : SpongeJsonConfigClass<MyJsonConfig>(MyJsonConfig::class.java) {
16-
* override val configFolder = Path("config/my-plugin")
17-
* override val fileName = "my-config.json"
17+
* companion object : SpongeJsonConfigClass<MyJsonConfig>(
18+
* MyJsonConfig::class.java,
19+
* Path("config/my-plugin"),
20+
* "my-config.json"
21+
* ) {
1822
* }
1923
* }
2024
* ```
2125
*
2226
* @param C the type of the configuration data object.
2327
* @param configClass the Java class of [C], used by the underlying config framework.
2428
*/
25-
abstract class SpongeJsonConfigClass<C>(configClass: Class<C>) : SpongeConfigClass<C>(configClass) {
29+
abstract class SpongeJsonConfigClass<C>(
30+
configClass: Class<C>, configFolder: Path, fileName: String
31+
) : SpongeConfigClass<C>(configClass, configFolder, fileName) {
2632

2733
/**
2834
* JSON-backed configuration manager for this config type.

surf-api-core/surf-api-core-api/src/main/kotlin/dev/slne/surf/surfapi/core/api/config/SpongeYmlConfigClass.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.slne.surf.surfapi.core.api.config
22

3+
import java.nio.file.Path
4+
35
/**
46
* Convenience base class for YAML-backed Sponge configuration classes.
57
*
@@ -12,17 +14,21 @@ package dev.slne.surf.surfapi.core.api.config
1214
* data class MyConfig(
1315
* var someField: String = "value"
1416
* ) {
15-
* companion object : SpongeYmlConfigClass<MyConfig>(MyConfig::class.java) {
16-
* override val configFolder = Path("config/my-plugin")
17-
* override val fileName = "my-config.yml"
17+
* companion object : SpongeYmlConfigClass<MyConfig>(
18+
* MyConfig::class.java,
19+
* Path("config/my-plugin"),
20+
* "my-config.yml"
21+
* ) {
1822
* }
1923
* }
2024
* ```
2125
*
2226
* @param C the type of the configuration data object.
2327
* @param configClass the Java class of [C], used by the underlying config framework.
2428
*/
25-
abstract class SpongeYmlConfigClass<C>(configClass: Class<C>) : SpongeConfigClass<C>(configClass) {
29+
abstract class SpongeYmlConfigClass<C>(
30+
configClass: Class<C>, configFolder: Path, fileName: String
31+
) : SpongeConfigClass<C>(configClass, configFolder, fileName) {
2632

2733
/**
2834
* YAML-backed configuration manager for this config type.

surf-api-velocity/surf-api-velocity-api/api/surf-api-velocity-api.api

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3908,25 +3908,25 @@ public abstract interface annotation class dev/slne/surf/surfapi/core/api/config
39083908
}
39093909

39103910
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
3911-
public synthetic fun <init> (Ljava/lang/Class;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
3911+
public synthetic fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
39123912
public final fun edit (ZLkotlin/jvm/functions/Function1;)V
39133913
public static synthetic fun edit$default (Ldev/slne/surf/surfapi/core/api/config/SpongeConfigClass;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
39143914
public final fun getConfig ()Ljava/lang/Object;
3915-
protected abstract fun getConfigFolder ()Ljava/nio/file/Path;
3916-
protected abstract fun getFileName ()Ljava/lang/String;
3915+
protected final fun getConfigFolder ()Ljava/nio/file/Path;
3916+
protected final fun getFileName ()Ljava/lang/String;
39173917
public abstract fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
39183918
public final fun init ()V
39193919
public final fun reloadFromFile ()Ljava/lang/Object;
39203920
public final fun save ()V
39213921
}
39223922

39233923
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeJsonConfigClass : dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
3924-
public fun <init> (Ljava/lang/Class;)V
3924+
public fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V
39253925
public fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
39263926
}
39273927

39283928
public abstract class dev/slne/surf/surfapi/core/api/config/SpongeYmlConfigClass : dev/slne/surf/surfapi/core/api/config/SpongeConfigClass {
3929-
public fun <init> (Ljava/lang/Class;)V
3929+
public fun <init> (Ljava/lang/Class;Ljava/nio/file/Path;Ljava/lang/String;)V
39303930
public fun getManager ()Ldev/slne/surf/surfapi/core/api/config/manager/SpongeConfigManager;
39313931
}
39323932

0 commit comments

Comments
 (0)