Skip to content

Add CanvasMC integration support with configuration options#240

Merged
twisti-dev merged 2 commits intoversion/1.21.11from
feat/canvasmc-support
Mar 11, 2026
Merged

Add CanvasMC integration support with configuration options#240
twisti-dev merged 2 commits intoversion/1.21.11from
feat/canvasmc-support

Conversation

@twisti-dev
Copy link
Contributor

No description provided.

@twisti-dev twisti-dev self-assigned this Mar 11, 2026
Copilot AI review requested due to automatic review settings March 11, 2026 15:49
@twisti-dev twisti-dev merged commit 1d46eea into version/1.21.11 Mar 11, 2026
4 of 5 checks passed
@twisti-dev twisti-dev deleted the feat/canvasmc-support branch March 11, 2026 15:49
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 useCanvasMc Gradle 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.isFolia and SurfBukkitApi.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.

Comment on lines 36 to +46
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()
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants