Skip to content

Commit 4f42353

Browse files
committed
refactor: migrate to platform CloudApi and remove ControllerApi usage
1 parent f53f4db commit 4f42353

File tree

13 files changed

+103
-123
lines changed

13 files changed

+103
-123
lines changed

build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
val baseVersion = "0.0.1"
88
val commitHash = System.getenv("COMMIT_HASH")
99
val timestamp = System.currentTimeMillis() // Temporary to be able to build and publish directly out of fix branch with same commit hash
10-
val snapshotVersion = "${baseVersion}-dev.${timestamp}-${commitHash}"
10+
val snapshotVersion = "${baseVersion}-platform.${timestamp}-${commitHash}"
1111

1212
allprojects {
1313
group = "app.simplecloud.plugin"
@@ -19,7 +19,6 @@ allprojects {
1919
maven("https://libraries.minecraft.net")
2020
maven("https://buf.build/gen/maven")
2121
maven("https://repo.simplecloud.app/snapshots")
22-
maven("https://buf.build/gen/maven")
2322
maven("https://repo.papermc.io/repository/maven-public")
2423
}
2524
}
@@ -31,8 +30,11 @@ subprojects {
3130
dependencies {
3231
testImplementation(rootProject.libs.kotlin.test)
3332
compileOnly(rootProject.libs.kotlin.jvm)
34-
compileOnly(rootProject.libs.bundles.simpleCloudController)
33+
compileOnly(rootProject.libs.kotlin.coroutines)
34+
compileOnly(rootProject.libs.simplecloud.api)
3535
compileOnly(rootProject.libs.bundles.adventure)
36+
compileOnly(rootProject.libs.bundles.configurate)
37+
compileOnly(rootProject.libs.slf4j.api)
3638
}
3739

3840
kotlin {

gradle/libs.versions.toml

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
[versions]
2-
kotlin = "2.0.20"
3-
simpleCloudController = "0.0.30-dev.e3e27fc"
2+
kotlin = "2.1.0"
3+
kotlin-coroutines = "1.10.2"
4+
simplecloud-api = "0.1.0-platform.5-dev.1765910097897-3d59340"
45
sonatype-central-portal-publisher = "1.2.3"
56
adventure = "4.18.0"
7+
configurate = "4.2.0"
8+
slf4j = "2.0.17"
69

710
[libraries]
811
kotlin-jvm = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
912
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
13+
kotlin-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" }
1014

11-
simpleCloudControllerApi = { module = "app.simplecloud.controller:controller-api", version.ref = "simpleCloudController" }
12-
simpleCloudControllerShared = { module = "app.simplecloud.controller:controller-shared", version.ref = "simpleCloudController" }
15+
simplecloud-api = { module = "app.simplecloud.api:api", version.ref = "simplecloud-api" }
1316

1417
adventure = { module = "net.kyori:adventure-api", version.ref = "adventure" }
15-
adventureMiniMessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure" }
18+
adventure-minimessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure" }
19+
20+
configurate-yaml = { module = "org.spongepowered:configurate-yaml", version.ref = "configurate" }
21+
configurate-gson = { module = "org.spongepowered:configurate-gson", version.ref = "configurate" }
22+
configurate-extra-kotlin = { module = "org.spongepowered:configurate-extra-kotlin", version.ref = "configurate" }
23+
24+
slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" }
1625

1726
[bundles]
18-
simpleCloudController = ["simpleCloudControllerApi", "simpleCloudControllerShared"]
19-
adventure = ["adventure", "adventureMiniMessage"]
27+
adventure = ["adventure", "adventure-minimessage"]
28+
configurate = ["configurate-yaml", "configurate-gson", "configurate-extra-kotlin"]
2029

2130
[plugins]
2231
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }

plugin-shared/src/main/kotlin/app/simplecloud/plugin/api/shared/extension/Extension.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package app.simplecloud.plugin.api.shared.extension
22

3-
import app.simplecloud.controller.shared.group.Group
4-
import app.simplecloud.controller.shared.server.Server
3+
import app.simplecloud.api.group.Group
4+
import app.simplecloud.api.server.Server
55
import app.simplecloud.plugin.api.shared.placeholder.PlaceholderProvider
66
import app.simplecloud.plugin.api.shared.placeholder.argument.ArgumentsResolver
77
import net.kyori.adventure.text.Component
Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,21 @@
11
package app.simplecloud.plugin.api.shared.pattern
22

3-
import app.simplecloud.controller.api.ControllerApi
4-
import app.simplecloud.controller.shared.group.Group
5-
import app.simplecloud.controller.shared.server.Server
3+
import app.simplecloud.api.CloudApi
4+
import app.simplecloud.api.group.Group
5+
import app.simplecloud.api.server.Server
66
import app.simplecloud.plugin.api.shared.pretty.StringPrettifier
7-
8-
/**
9-
* @author Niklas Nieberler
10-
*/
7+
import kotlinx.coroutines.future.await
118

129
class ServerPatternIdentifier(
1310
private val pattern: String = "<group_name>-<numerical_id>",
1411
regexPattern: String = pattern
1512
.replace("<group_name>", "(?<groupName>[a-zA-Z]+)")
1613
.replace("<numerical_id>", "(?<numericalId>\\d+)"),
17-
private val controllerApi: ControllerApi.Coroutine = ControllerApi.createCoroutineApi()
14+
private val cloudApi: CloudApi = CloudApi.create()
1815
) {
1916

2017
private val regex = Regex(regexPattern)
2118

22-
/**
23-
* Gets the group and numerical id matching the [pattern] in a [Pair]
24-
* @param name the server name
25-
* @param customRegex custom regex pattern
26-
*/
2719
fun parse(name: String, customRegex: Regex? = null): Pair<String, Int> {
2820
val matchResult = customRegex?.matchEntire(name) ?: this.regex.matchEntire(name)
2921
if (matchResult == null)
@@ -36,34 +28,26 @@ class ServerPatternIdentifier(
3628
return Pair(groupName, numericalId)
3729
}
3830

39-
/**
40-
* Gets a server string as a set in the pattern
41-
* @param server replaces it to pattern
42-
*/
4331
fun parseServerToPattern(server: Server): String {
4432
return this.pattern
45-
.replace("<group_name>", server.group)
46-
.replace("<group_pretty_name>", server.properties["pretty-name"] ?: StringPrettifier.prettify(server.group))
47-
.replace("<id>", server.uniqueId)
48-
.replace("<unique_id>", server.uniqueId)
33+
.replace("<group_name>", server.serverBase.name)
34+
.replace("<group_pretty_name>", server.properties["pretty-name"]?.toString() ?: StringPrettifier.prettify(server.serverBase.name))
35+
.replace("<id>", server.serverId)
36+
.replace("<unique_id>", server.serverId)
4937
.replace("<numerical_id>", server.numericalId.toString())
5038
}
5139

52-
/**
53-
* Gets the [Group] by the matching [pattern]
54-
* @param name the server name
55-
*/
5640
suspend fun getGroup(name: String): Group? {
5741
val groupName = parse(name).first
58-
return this.controllerApi.getGroups().getGroupByName(groupName)
42+
return try {
43+
this.cloudApi.group().getGroupByName(groupName).await()
44+
} catch (e: Exception) {
45+
null
46+
}
5947
}
6048

61-
/**
62-
* Gets the numerical id by the matching [pattern]
63-
* @param name the server name
64-
*/
6549
fun getNumericalId(name: String): Int {
6650
return parse(name).second
6751
}
6852

69-
}
53+
}

plugin-shared/src/main/kotlin/app/simplecloud/plugin/api/shared/placeholder/argument/PropertiesArgumentsResolver.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue
88
*/
99

1010
class PropertiesArgumentsResolver(
11-
private val properties: Map<String, String>
11+
private val properties: Map<String, Any>
1212
) : ArgumentsResolver {
1313

1414
override fun getKey() = "property"
@@ -17,7 +17,7 @@ class PropertiesArgumentsResolver(
1717
val argumentName = arguments.popOr("property expected").value()
1818
val defaultArgument = arguments.peek()?.value() ?: ""
1919
val string = this.properties[argumentName] ?: defaultArgument
20-
return Tag.preProcessParsed(string)
20+
return Tag.preProcessParsed(string.toString())
2121
}
2222

2323
}
Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package app.simplecloud.plugin.api.shared.placeholder.argument.group
22

3-
import app.simplecloud.controller.api.ControllerApi
4-
import app.simplecloud.controller.shared.group.Group
3+
import app.simplecloud.api.CloudApi
4+
import app.simplecloud.api.group.Group
5+
import app.simplecloud.api.server.ServerState
56
import app.simplecloud.plugin.api.shared.placeholder.argument.ArgumentsResolver
6-
import build.buf.gen.simplecloud.controller.v1.ServerState
7+
import kotlinx.coroutines.future.await
78
import net.kyori.adventure.text.minimessage.tag.Tag
89
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue
9-
import kotlin.collections.filter
10-
import kotlin.collections.firstOrNull
11-
import kotlin.collections.sumOf
12-
13-
/**
14-
* @author Niklas Nieberler
15-
*/
1610

1711
class PlayerCountArgumentsResolver(
18-
private val controllerApi: ControllerApi.Coroutine,
12+
private val cloudApi: CloudApi,
1913
private val group: Group,
2014
) : ArgumentsResolver {
2115

@@ -27,10 +21,13 @@ class PlayerCountArgumentsResolver(
2721
return Tag.preProcessParsed(findPlayerCount(this.group, serverState).toString())
2822
}
2923

30-
private suspend fun findPlayerCount(group: Group, state: ServerState?): Long {
31-
return this.controllerApi.getServers().getServersByGroup(group)
32-
.filter { it.state == state }
33-
.sumOf { it.playerCount }
24+
private suspend fun findPlayerCount(group: Group, state: ServerState?): Int {
25+
val servers = this.cloudApi.server().getServersByGroup(group.name).await()
26+
return if (state != null) {
27+
servers.filter { it.state == state }.sumOf { it.playerCount }
28+
} else {
29+
servers.sumOf { it.playerCount }
30+
}
3431
}
3532

36-
}
33+
}
Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
package app.simplecloud.plugin.api.shared.placeholder.argument.group
22

3-
import app.simplecloud.controller.api.ControllerApi
4-
import app.simplecloud.controller.shared.group.Group
3+
import app.simplecloud.api.CloudApi
4+
import app.simplecloud.api.group.Group
5+
import app.simplecloud.api.server.ServerState
56
import app.simplecloud.plugin.api.shared.placeholder.argument.ArgumentsResolver
6-
import build.buf.gen.simplecloud.controller.v1.ServerState
7+
import kotlinx.coroutines.future.await
78
import net.kyori.adventure.text.minimessage.tag.Tag
89
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue
9-
import kotlin.collections.filter
10-
import kotlin.collections.firstOrNull
11-
12-
/**
13-
* @author Niklas Nieberler
14-
*/
1510

1611
class ServerCountArgumentsResolver(
17-
private val controllerApi: ControllerApi.Coroutine,
12+
private val cloudApi: CloudApi,
1813
private val group: Group,
1914
) : ArgumentsResolver {
2015

@@ -23,13 +18,16 @@ class ServerCountArgumentsResolver(
2318
override suspend fun resolve(arguments: ArgumentQueue): Tag? {
2419
val text = arguments.popOr("all").value()
2520
val serverState = ServerState.entries.firstOrNull { it.name.equals(text, true) }
26-
return Tag.preProcessParsed(findPlayerCount(this.group, serverState).toString())
21+
return Tag.preProcessParsed(findServerCount(this.group, serverState).toString())
2722
}
2823

29-
private suspend fun findPlayerCount(group: Group, state: ServerState?): Int {
30-
return this.controllerApi.getServers().getServersByGroup(group)
31-
.filter { it.state == state }
32-
.size
24+
private suspend fun findServerCount(group: Group, state: ServerState?): Int {
25+
val servers = this.cloudApi.server().getServersByGroup(group.name).await()
26+
return if (state != null) {
27+
servers.filter { it.state == state }.size
28+
} else {
29+
servers.size
30+
}
3331
}
3432

35-
}
33+
}

plugin-shared/src/main/kotlin/app/simplecloud/plugin/api/shared/placeholder/provider/AbstractPlaceholderProvider.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package app.simplecloud.plugin.api.shared.placeholder.provider
22

3-
import app.simplecloud.controller.api.ControllerApi
3+
import app.simplecloud.api.CloudApi
44
import app.simplecloud.plugin.api.shared.extension.text
55
import app.simplecloud.plugin.api.shared.placeholder.argument.ArgumentsResolver
66
import app.simplecloud.plugin.api.shared.placeholder.single.SinglePlaceholderExecutor
@@ -16,15 +16,15 @@ abstract class AbstractPlaceholderProvider<T>(
1616
private val executor: SinglePlaceholderExecutor<T>,
1717
) {
1818

19-
private val controllerApi = ControllerApi.createCoroutineApi()
19+
private val cloudApi = CloudApi.create()
2020

2121
/**
2222
* Gets the list of all available [ArgumentsResolver]
23-
* @param controllerApi the instance of [ControllerApi.Coroutine]
23+
* @param cloudApi the instance of [CloudApi]
2424
* @param value for the placeholder
2525
*/
2626
abstract suspend fun getArgumentsResolvers(
27-
controllerApi: ControllerApi.Coroutine,
27+
cloudApi: CloudApi,
2828
value: T,
2929
): List<ArgumentsResolver>
3030

@@ -39,10 +39,10 @@ abstract class AbstractPlaceholderProvider<T>(
3939
vararg argumentsResolver: ArgumentsResolver,
4040
): TagResolver {
4141
val availableArgumentsResolver = listOf(
42-
*getArgumentsResolvers(this.controllerApi, value).toTypedArray(),
42+
*getArgumentsResolvers(this.cloudApi, value).toTypedArray(),
4343
*argumentsResolver
4444
)
45-
val singleTagResolver = this.executor.getTagResolver(this.controllerApi, value, prefix)
45+
val singleTagResolver = this.executor.getTagResolver(this.cloudApi, value, prefix)
4646
return TagResolver.resolver(
4747
singleTagResolver,
4848
*availableArgumentsResolver
Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
11
package app.simplecloud.plugin.api.shared.placeholder.provider
22

3-
import app.simplecloud.controller.api.ControllerApi
4-
import app.simplecloud.controller.shared.group.Group
3+
import app.simplecloud.api.CloudApi
4+
import app.simplecloud.api.group.Group
55
import app.simplecloud.plugin.api.shared.placeholder.argument.PropertiesArgumentsResolver
66
import app.simplecloud.plugin.api.shared.placeholder.argument.group.PlayerCountArgumentsResolver
77
import app.simplecloud.plugin.api.shared.placeholder.argument.group.ServerCountArgumentsResolver
88
import app.simplecloud.plugin.api.shared.placeholder.single.SingleGroupPlaceholderExecutor
99

10-
/**
11-
* @author Niklas Nieberler
12-
*/
13-
1410
class GroupPlaceholderProvider : AbstractPlaceholderProvider<Group>(
1511
SingleGroupPlaceholderExecutor()
1612
) {
1713

18-
override suspend fun getArgumentsResolvers(controllerApi: ControllerApi.Coroutine, value: Group) = listOf(
14+
override suspend fun getArgumentsResolvers(cloudApi: CloudApi, value: Group) = listOf(
1915
PropertiesArgumentsResolver(value.properties),
20-
PlayerCountArgumentsResolver(controllerApi, value),
21-
ServerCountArgumentsResolver(controllerApi, value)
16+
PlayerCountArgumentsResolver(cloudApi, value),
17+
ServerCountArgumentsResolver(cloudApi, value)
2218
)
2319

24-
}
20+
}

plugin-shared/src/main/kotlin/app/simplecloud/plugin/api/shared/placeholder/provider/ServerPlaceholderProvider.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package app.simplecloud.plugin.api.shared.placeholder.provider
22

3-
import app.simplecloud.controller.api.ControllerApi
4-
import app.simplecloud.controller.shared.server.Server
3+
import app.simplecloud.api.CloudApi
4+
import app.simplecloud.api.server.Server
55
import app.simplecloud.plugin.api.shared.placeholder.argument.*
66
import app.simplecloud.plugin.api.shared.placeholder.single.SingleServerPlaceholderExecutor
77

@@ -13,7 +13,7 @@ class ServerPlaceholderProvider : AbstractPlaceholderProvider<Server>(
1313
SingleServerPlaceholderExecutor()
1414
) {
1515

16-
override suspend fun getArgumentsResolvers(controllerApi: ControllerApi.Coroutine, value: Server) = listOf(
16+
override suspend fun getArgumentsResolvers(cloudApi: CloudApi, value: Server) = listOf(
1717
PropertiesArgumentsResolver(value.properties)
1818
)
1919

0 commit comments

Comments
 (0)