Skip to content

Commit 1d46eea

Browse files
authored
Add CanvasMC integration support with configuration options (#240)
2 parents 3124264 + 0620808 commit 1d46eea

10 files changed

Lines changed: 59 additions & 9 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=25
88
mcVersion=1.21.11
99
group=dev.slne.surf
10-
version=1.21.11-2.61.0
10+
version=1.21.11-2.62.0
1111
relocationPrefix=dev.slne.surf.surfapi.libs
1212
snapshot=false

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[versions]
22
# Paper
33
paper-api = "1.21.11-R0.1-SNAPSHOT"
4+
canvas-api = "1.21.11-R0.1-SNAPSHOT"
45

56
# Hytale
67
hytale-server = "1.0.0"
@@ -77,6 +78,7 @@ dokka = "2.1.0"
7778
[libraries]
7879
# Paper
7980
paper-api = { module = "io.papermc.paper:paper-api", version.ref = "paper-api" }
81+
canvas-api = { module = "io.canvasmc.canvas:canvas-api", version.ref = "canvas-api" }
8082

8183
# Hytale
8284
hytale-server = { module = "dev.hypixel:hytale-server", version.ref = "hytale-server" }

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ public abstract interface class dev/slne/surf/surfapi/bukkit/api/SurfBukkitApi :
22
public static final field Companion Ldev/slne/surf/surfapi/bukkit/api/SurfBukkitApi$Companion;
33
public abstract fun createScoreboard (Lnet/kyori/adventure/text/Component;)Ldev/slne/surf/surfapi/bukkit/api/scoreboard/SurfScoreboardBuilder;
44
public static fun getInstance ()Ldev/slne/surf/surfapi/bukkit/api/SurfBukkitApi;
5+
public abstract fun isCanvasMc ()Z
6+
public abstract fun isFolia ()Z
57
public abstract fun scoreboardLibrary ()Lnet/megavex/scoreboardlibrary/api/ScoreboardLibrary;
68
public fun sendPlayerToServer (Lorg/bukkit/entity/Player;Ljava/lang/String;)V
79
public abstract fun skipTimeSmoothly (JJLkotlin/coroutines/Continuation;)Ljava/lang/Object;

surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/SurfBukkitApi.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import org.jetbrains.annotations.ApiStatus
1717
@ApiStatus.NonExtendable
1818
interface SurfBukkitApi : SurfCoreApi {
1919

20+
val isFolia: Boolean
21+
val isCanvasMc: Boolean
22+
2023
@ObsoleteScoreboardApi
2124
fun scoreboardLibrary(): ScoreboardLibrary
2225

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/impl/SurfBukkitApiImpl.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class SurfBukkitApiImpl : SurfCoreApiImpl(), SurfBukkitApi {
3232
SurfBukkitHookManager.onEnable()
3333
}
3434

35+
override val isFolia: Boolean by lazy { runCatching { Class.forName("io.papermc.paper.threadedregions.RegionizedServer") }.isSuccess }
36+
override val isCanvasMc: Boolean by lazy { runCatching { Class.forName("io.canvasmc.canvas.event.EntityPortalAsyncEvent") }.isSuccess }
37+
3538
@ObsoleteScoreboardApi
3639
override fun scoreboardLibrary() = plugin.getScoreboardLibrary()
3740

surf-api-gradle-plugin/build.gradle.kts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ plugins {
2121
group = groupId
2222
version = buildString {
2323
append(mcVersion)
24-
append("-1.12.3")
24+
append("-1.13.0")
2525
if (snapshot) append("-SNAPSHOT")
2626
}
2727

@@ -109,14 +109,15 @@ val generateConstants by tasks.registering {
109109
inputs.property("javaVersion", javaVersion)
110110
inputs.property("mcVersion", mcVersion)
111111
inputs.property("libs.paper.api", libs.paper.api.get().toString())
112+
inputs.property("libs.canvas.api", libs.canvas.api.get().toString())
112113
inputs.property("libs.velocity.api", libs.velocity.api.get().toString())
113114
inputs.property("libs.auto.service.annotations", libs.auto.service.annotations.get().toString())
114-
inputs.property("libs.versions.commandapi", libs.versions.commandapi.get().toString())
115-
inputs.property("libs.versions.placeholder.api", libs.versions.placeholder.api.get().toString())
116-
inputs.property("libs.versions.luckperms", libs.versions.luckperms.get().toString())
115+
inputs.property("libs.versions.commandapi", libs.versions.commandapi.get())
116+
inputs.property("libs.versions.placeholder.api", libs.versions.placeholder.api.get())
117+
inputs.property("libs.versions.luckperms", libs.versions.luckperms.get())
117118
inputs.property(
118119
"libs.versions.packetevents",
119-
libs.versions.packetevents.plugin.get().toString()
120+
libs.versions.packetevents.plugin.get()
120121
)
121122
inputs.property(
122123
"version",
@@ -134,6 +135,7 @@ val generateConstants by tasks.registering {
134135
| const val SNAPSHOT_REPO_ID = "maven-releases"
135136
| const val SNAPSHOT_REPO = "https://repo.slne.dev/repository/maven-releases"
136137
| const val PAPER_API = "${libs.paper.api.get()}"
138+
| const val CANVAS_API = "${libs.canvas.api.get()}"
137139
| const val VELOCITY_API = "${libs.velocity.api.get()}"
138140
| const val AUTO_SERVICE_ANNOTATIONS = "${libs.auto.service.annotations.get()}"
139141
| const val AUTO_SERVICE = "${generator.group}:${generator.name}:${generator.version}"

surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/paper/AbstractPaperSurfExtension.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,13 @@ package dev.slne.surf.surfapi.gradle.platform.paper
22

33
import dev.slne.surf.surfapi.gradle.platform.core.CoreSurfExtension
44
import org.gradle.api.model.ObjectFactory
5+
import org.gradle.kotlin.dsl.property
56

6-
abstract class AbstractPaperSurfExtension(objects: ObjectFactory) : CoreSurfExtension(objects)
7+
abstract class AbstractPaperSurfExtension(objects: ObjectFactory) : CoreSurfExtension(objects) {
8+
val useCanvasMc = objects.property<Boolean>().convention(false)
9+
10+
fun useCanvasMc() {
11+
useCanvasMc.set(true)
12+
useCanvasMc.finalizeValue()
13+
}
14+
}

surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/paper/AbstractPaperSurfPlugin.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package dev.slne.surf.surfapi.gradle.platform.paper
33
import dev.slne.surf.surfapi.gradle.generated.Constants
44
import dev.slne.surf.surfapi.gradle.platform.SurfApiPlatform
55
import dev.slne.surf.surfapi.gradle.platform.core.AbstractCoreSurfPlugin
6+
import dev.slne.surf.surfapi.gradle.util.canvasMaven
67
import org.gradle.api.Project
78
import org.gradle.kotlin.dsl.dependencies
9+
import org.gradle.kotlin.dsl.repositories
810
import org.jetbrains.kotlin.gradle.utils.COMPILE_ONLY
911

1012
internal abstract class AbstractPaperSurfPlugin<E : AbstractPaperSurfExtension>(platformName: String) :
@@ -15,8 +17,30 @@ internal abstract class AbstractPaperSurfPlugin<E : AbstractPaperSurfExtension>(
1517
}
1618

1719
override fun Project.configure0() {
20+
}
21+
22+
override fun Project.afterEvaluated1(extension: E) {
23+
if (extension.useCanvasMc.get()) {
24+
repositories {
25+
canvasMaven()
26+
}
27+
}
28+
1829
dependencies {
19-
add(COMPILE_ONLY, Constants.PAPER_API)
30+
if (extension.useCanvasMc.get()) {
31+
add(COMPILE_ONLY, Constants.CANVAS_API)
32+
} else {
33+
add(COMPILE_ONLY, Constants.PAPER_API)
34+
}
35+
}
36+
37+
if (extension.useCanvasMc.get()) {
38+
configurations.all {
39+
resolutionStrategy.capabilitiesResolution.withCapability("org.bukkit:bukkit") {
40+
select(Constants.CANVAS_API)
41+
}
42+
}
2043
}
2144
}
45+
2246
}

surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/paper/plugin/PaperPluginSurfPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ internal class PaperPluginSurfPlugin :
4343
main = extension.mainClass.get()
4444
bootstrapper = extension.bootstrapper.orNull
4545
apiVersion = Constants.MINECRAFT_VERSION
46-
foliaSupported = extension.foliaSupported.get()
46+
foliaSupported = extension.useCanvasMc.get() || extension.foliaSupported.get()
4747

4848
if (extension.generateLibraryLoader.get()) {
4949
generateLibrariesJson = true

surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/util/repo-extensions.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ inline fun RepositoryHandler.slnePublic(crossinline block: MavenArtifactReposito
1616
block()
1717
}
1818

19+
inline fun RepositoryHandler.canvasMaven(crossinline block: MavenArtifactRepository.() -> Unit = {}) =
20+
maven("https://maven.canvasmc.io/snapshots") {
21+
name = "Canvas"
22+
block()
23+
}
24+
1925
inline fun RepositoryHandler.slneReleases(crossinline block: MavenArtifactRepository.() -> Unit = {}) =
2026
maven("https://repo.slne.dev/repository/maven-releases/") {
2127
name = "maven-releases"

0 commit comments

Comments
 (0)