Add CanvasMC integration support with configuration options#240
Add CanvasMC integration support with configuration options#240twisti-dev merged 2 commits intoversion/1.21.11from
Conversation
There was a problem hiding this comment.
Pull request overview
Adds optional CanvasMC support to SURF-API’s Paper/Bukkit tooling, enabling projects to compile against Canvas’ API and detect Canvas/Folia at runtime.
Changes:
- Add a CanvasMC Maven repository helper and a
useCanvasMcGradle extension flag for Paper projects. - Switch Paper build configuration to use
canvas-api(and capability resolution) when CanvasMC is enabled. - Expose runtime platform detection via
SurfBukkitApi.isFoliaandSurfBukkitApi.isCanvasMc.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/util/repo-extensions.kt | Adds canvasMaven() repository helper. |
| surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/paper/plugin/PaperPluginSurfPlugin.kt | Updates plugin-yml Folia support flag logic when Canvas is enabled. |
| surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/paper/AbstractPaperSurfPlugin.kt | Adds Canvas-aware repo/dependency selection and capability resolution. |
| surf-api-gradle-plugin/src/main/kotlin/dev/slne/surf/surfapi/gradle/platform/paper/AbstractPaperSurfExtension.kt | Introduces useCanvasMc configuration option. |
| surf-api-gradle-plugin/build.gradle.kts | Bumps gradle-plugin version and generates Constants.CANVAS_API. |
| surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/impl/SurfBukkitApiImpl.kt | Implements isFolia / isCanvasMc runtime detection. |
| surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/SurfBukkitApi.kt | Adds isFolia / isCanvasMc to the public Bukkit API. |
| surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api | Updates ABI dump for the new API members. |
| gradle/libs.versions.toml | Adds Canvas API dependency coordinates. |
| gradle.properties | Bumps project version. |
| override fun Project.afterEvaluated1(extension: PaperPluginSurfExtension) { | ||
| val generateLoaderTask = generateLibrariesLoaderTask( | ||
| extension.mainClass.get().substringBeforeLast('.') | ||
| ) | ||
|
|
||
| configure<PaperPluginDescription> { | ||
| authors = extension.authors.get() | ||
| main = extension.mainClass.get() | ||
| bootstrapper = extension.bootstrapper.orNull | ||
| apiVersion = Constants.MINECRAFT_VERSION | ||
| foliaSupported = extension.foliaSupported.get() | ||
| foliaSupported = extension.useCanvasMc.get() || extension.foliaSupported.get() |
There was a problem hiding this comment.
PaperPluginSurfPlugin.afterEvaluated1 overrides the new Canvas/Paper dependency setup in AbstractPaperSurfPlugin.afterEvaluated1 but does not call super.afterEvaluated1(extension). As a result, this plugin variant will no longer add the compileOnly Paper/Canvas API dependency (and won’t add the Canvas repo / capability selection when useCanvasMc is enabled), likely breaking compilation and Canvas support. Call super.afterEvaluated1(extension) (typically as the first statement) or refactor the shared setup so it always executes for all Paper plugins.
No description provided.