Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
# Paper
paper-api = "1.21.11-R0.1-SNAPSHOT"

# Canvas
canvas-api = "1.21.11-R0.1-SNAPSHOT"

# Hytale
hytale-server = "1.0.0"

Expand Down Expand Up @@ -78,6 +81,9 @@ dokka = "2.1.0"
# Paper
paper-api = { module = "io.papermc.paper:paper-api", version.ref = "paper-api" }

# Canvas
canvas-api = { module = "io.canvasmc.canvas:canvas-api", version.ref = "canvas-api" }

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

Expand Down
8 changes: 8 additions & 0 deletions surf-api-gradle-plugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ surfPaperPluginApi { // name changes depending on the plugin type
- `dev.slne.surf.surfapi.gradle.core` for core modules (applies kotlin and other plugins, adds surf-core-api compileOnly dependency)
- `dev.slne.surf.surfapi.gradle.paper-plugin` for paper plugin modules (all core features, adds paper-api dependency, generation of paper-plugin.yml and runServer configuration)
- `dev.slne.surf.surfapi.gradle.paper-raw` for paper plugin modules (all core features, adds paper-api dependency, **NO** generation of paper-plugin.yml nor runServer configuration)
- `dev.slne.surf.surfapi.gradle.canvas-plugin` for canvas plugin modules (all paper-plugin features, adds canvas-api dependency and Canvas maven repository)
- `dev.slne.surf.surfapi.gradle.standalone` for standalone modules (all core features, adds surf-core-api dependency, shades surf-api-standalone)
- `dev.slne.surf.surfapi.gradle.velocity` for velocity modules (all core features, adds velocity-api dependency)

Expand Down Expand Up @@ -86,3 +87,10 @@ plugins {
id("dev.slne.surf.surfapi.gradle.velocity")
}
```

#### Canvas Plugin
```kotlin
plugins {
id("dev.slne.surf.surfapi.gradle.canvas-plugin")
}
```
10 changes: 9 additions & 1 deletion surf-api-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ plugins {
group = groupId
version = buildString {
append(mcVersion)
append("-1.12.3")
append("-1.12.4")
if (snapshot) append("-SNAPSHOT")
}

Expand Down Expand Up @@ -72,6 +72,12 @@ gradlePlugin {
"dev.slne.surf.surfapi.gradle.platform.paper.raw.RawPaperSurfPlugin"
}

create("canvas-plugin") {
id = "dev.slne.surf.surfapi.gradle.canvas-plugin"
implementationClass =
"dev.slne.surf.surfapi.gradle.platform.canvas.CanvasPluginSurfPlugin"
}

create("standalone") {
id = "dev.slne.surf.surfapi.gradle.standalone"
implementationClass =
Expand Down Expand Up @@ -109,6 +115,7 @@ val generateConstants by tasks.registering {
inputs.property("javaVersion", javaVersion)
inputs.property("mcVersion", mcVersion)
inputs.property("libs.paper.api", libs.paper.api.get().toString())
inputs.property("libs.canvas.api", libs.canvas.api.get().toString())
inputs.property("libs.velocity.api", libs.velocity.api.get().toString())
inputs.property("libs.auto.service.annotations", libs.auto.service.annotations.get().toString())
inputs.property("libs.versions.commandapi", libs.versions.commandapi.get().toString())
Expand All @@ -134,6 +141,7 @@ val generateConstants by tasks.registering {
| const val SNAPSHOT_REPO_ID = "maven-releases"
| const val SNAPSHOT_REPO = "https://repo.slne.dev/repository/maven-releases"
| const val PAPER_API = "${libs.paper.api.get()}"
| const val CANVAS_API = "${libs.canvas.api.get()}"
| const val VELOCITY_API = "${libs.velocity.api.get()}"
| const val AUTO_SERVICE_ANNOTATIONS = "${libs.auto.service.annotations.get()}"
| const val AUTO_SERVICE = "${generator.group}:${generator.name}:${generator.version}"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package dev.slne.surf.surfapi.gradle.platform.canvas

import dev.slne.surf.surfapi.gradle.generated.Constants
import dev.slne.surf.surfapi.gradle.platform.paper.plugin.AbstractPaperPluginSurfPlugin
import dev.slne.surf.surfapi.gradle.util.canvasMaven
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.repositories
import org.jetbrains.kotlin.gradle.utils.COMPILE_ONLY

internal class CanvasPluginSurfPlugin :
AbstractPaperPluginSurfPlugin<CanvasSurfExtension>("canvasPlugin") {

override val extensionClass = CanvasSurfExtension::class.java

override fun Project.applyRepositories0() {
repositories {
canvasMaven()
}
}

override fun Project.configure0() {
dependencies {
add(COMPILE_ONLY, Constants.CANVAS_API)
}

// Canvas provides the org.bukkit:bukkit capability (as a Paper fork), so we resolve
// any capability conflict in favour of canvas-api over paper-api or plain bukkit.
configurations.all {
resolutionStrategy.capabilitiesResolution.withCapability("org.bukkit:bukkit") {
select(Constants.CANVAS_API)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package dev.slne.surf.surfapi.gradle.platform.canvas

import dev.slne.surf.surfapi.gradle.platform.paper.plugin.PaperPluginSurfExtension
import org.gradle.api.model.ObjectFactory
import javax.inject.Inject

open class CanvasSurfExtension @Inject constructor(objects: ObjectFactory) :
PaperPluginSurfExtension(objects) {

init {
foliaSupported.convention(true)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package dev.slne.surf.surfapi.gradle.platform.paper.plugin

import dev.slne.surf.surfapi.gradle.generated.Constants
import dev.slne.surf.surfapi.gradle.generators.LibrariesLoaderGenerator.generateLibrariesLoaderTask
import dev.slne.surf.surfapi.gradle.platform.paper.AbstractPaperSurfPlugin
import dev.slne.surf.surfapi.gradle.util.registerRequired
import net.minecrell.pluginyml.GeneratePluginDescription
import net.minecrell.pluginyml.paper.PaperPluginDescription
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.SourceSetContainer
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.invoke
import org.gradle.kotlin.dsl.withType
import xyz.jpenilla.runpaper.task.RunServer

internal abstract class AbstractPaperPluginSurfPlugin<E : PaperPluginSurfExtension>(platformName: String) :
AbstractPaperSurfPlugin<E>(platformName) {

init {
addRelocationsForDependency(
"surf-data-api",
"com.fasterxml.jackson" to "dev.slne.data.libs.jackson"
)
}

private val paperPlugins = listOf(
"xyz.jpenilla.run-paper",
"de.eldoria.plugin-yml.paper"
)

override fun Project.afterEvaluated1(extension: E) {
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()

if (extension.generateLibraryLoader.get()) {
generateLibrariesJson = true
loader = generateLoaderTask.get().loaderLocation()
}

bootstrapDependencies {
registerRequired("surf-bukkit-api")

if (extension.withSurfRedis.get() && !extension.surfRedisRelocation.isPresent) {
registerRequired("surf-redis-paper")
}

extension.bootstrapDependencies.orNull?.execute(this)
}

serverDependencies {
registerRequired("surf-bukkit-api")
if (extension.coreModule.isPresent) {
registerRequired("surf-core-paper")
}

if (extension.withSurfRedis.get() && !extension.surfRedisRelocation.isPresent) {
registerRequired("surf-redis-paper")
}

extension.serverDependencies.orNull?.execute(this)
}
}

if (extension.generateLibraryLoader.get()) {
plugins.withType<JavaPlugin> {
extensions.getByType<SourceSetContainer>().named(SourceSet.MAIN_SOURCE_SET_NAME) {
java.srcDir(generateLoaderTask.map { it.outputDirectory.get() })
}
}
}


tasks {
withType<GeneratePluginDescription> {
useDefaultCentralProxy()
}

withType<RunServer> {
minecraftVersion(Constants.MINECRAFT_VERSION)

extension.runServer.orNull?.execute(this)
}
}
}

override fun Project.applyPlugins0() {
paperPlugins.forEach { plugin ->
applyPlugin(plugin)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,104 +1,7 @@
package dev.slne.surf.surfapi.gradle.platform.paper.plugin

import dev.slne.surf.surfapi.gradle.generated.Constants
import dev.slne.surf.surfapi.gradle.generators.LibrariesLoaderGenerator.generateLibrariesLoaderTask
import dev.slne.surf.surfapi.gradle.platform.paper.AbstractPaperSurfPlugin
import dev.slne.surf.surfapi.gradle.util.registerRequired
import net.minecrell.pluginyml.GeneratePluginDescription
import net.minecrell.pluginyml.paper.PaperPluginDescription
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.SourceSetContainer
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.invoke
import org.gradle.kotlin.dsl.withType
import xyz.jpenilla.runpaper.task.RunServer

internal class PaperPluginSurfPlugin :
AbstractPaperSurfPlugin<PaperPluginSurfExtension>("paperPlugin") {
AbstractPaperPluginSurfPlugin<PaperPluginSurfExtension>("paperPlugin") {

override val extensionClass = PaperPluginSurfExtension::class.java

init {
addRelocationsForDependency(
"surf-data-api",
"com.fasterxml.jackson" to "dev.slne.data.libs.jackson"
)
}

private val paperPlugins = listOf(
"xyz.jpenilla.run-paper",
"de.eldoria.plugin-yml.paper"
)

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()

if (extension.generateLibraryLoader.get()) {
generateLibrariesJson = true
loader = generateLoaderTask.get().loaderLocation()
}

bootstrapDependencies {
registerRequired("surf-bukkit-api")

if (extension.withSurfRedis.get() && !extension.surfRedisRelocation.isPresent) {
registerRequired("surf-redis-paper")
}

extension.bootstrapDependencies.orNull?.execute(this)
}

serverDependencies {
registerRequired("surf-bukkit-api")
if (extension.coreModule.isPresent) {
registerRequired("surf-core-paper")
}

if (extension.withSurfRedis.get() && !extension.surfRedisRelocation.isPresent) {
registerRequired("surf-redis-paper")
}

extension.serverDependencies.orNull?.execute(this)
}
}

if (extension.generateLibraryLoader.get()) {
plugins.withType<JavaPlugin> {
extensions.getByType<SourceSetContainer>().named(SourceSet.MAIN_SOURCE_SET_NAME) {
java.srcDir(generateLoaderTask.map { it.outputDirectory.get() })
}
}
}


tasks {
withType<GeneratePluginDescription> {
useDefaultCentralProxy()
}

withType<RunServer> {
minecraftVersion(Constants.MINECRAFT_VERSION)

extension.runServer.orNull?.execute(this)
}
}
}

override fun Project.applyPlugins0() {
paperPlugins.forEach { plugin ->
applyPlugin(plugin)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ inline fun RepositoryHandler.slnePublic(crossinline block: MavenArtifactReposito
block()
}

inline fun RepositoryHandler.canvasMaven(crossinline block: MavenArtifactRepository.() -> Unit = {}) =
maven("https://maven.canvasmc.io/snapshots") {
name = "Canvas"
block()
}

inline fun RepositoryHandler.slneReleases(crossinline block: MavenArtifactRepository.() -> Unit = {}) =
maven("https://repo.slne.dev/repository/maven-releases/") {
name = "maven-releases"
Expand Down