Skip to content
8 changes: 5 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,16 @@ The plugin has been converted to Kotlin to make support easier.
The plugin still can be configured with Groovy DSL but
now it is friendly to Kotlin DSL.

### Added
- Configuration avoidance and build cache for task `generateMetaData`

### Removed
- Task `:rebuildServerCore`, use `:buildServerCore --rerun-tasks` instead
- Extension `DependencyHandler.craftbukkit()`, use `DependencyHandler.spigot()` instead
- Automatic `mavenLocal()` apply, you should apply it manually if you need it

### Changed
- Add `nogui` argument by default to `bukkitArgs`
- Type of properties `server.jvmArgs` and `server.bukkitArgs` changed from `String` to `List<String>`.
It makes it easier to add arguments without overriding defaults

### Housekeeping
- Default bukkit version now is 1.16.4
- Update Gradle to 6.7.1
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,9 +227,9 @@ bukkit {
// Set server encoding (flag -Dfile.encoding)
encoding = "UTF-8"
// JVM arguments
javaArgs = "-Xmx1G"
javaArgs("-Xmx1G")
// Bukkit arguments
bukkitArgs = ""
bukkitArgs("nogui")
}
}
```
Expand Down
7 changes: 4 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
plugins {
`kotlin-dsl`
`maven-publish`
groovy
kotlin("jvm") version "1.4.21"
id("groovy")
id("maven-publish")
id("com.gradle.plugin-publish") version "0.12.0"
id("com.github.ben-manes.versions") version "0.36.0"
}

java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
withSourcesJar()
}

kotlin {
explicitApi()
}

tasks.test {
tasks.test.configure {
useJUnitPlatform()
}

Expand Down
11 changes: 10 additions & 1 deletion src/main/kotlin/BukkitExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import groovy.lang.Closure
import org.gradle.api.Project
import org.gradle.kotlin.dsl.getByType
import org.gradle.util.ConfigureUtil
import org.slf4j.LoggerFactory
import ru.endlesscode.bukkitgradle.extensions.warnSyntaxChanged
import ru.endlesscode.bukkitgradle.meta.extension.PluginMetaImpl
import ru.endlesscode.bukkitgradle.server.ServerConstants
import ru.endlesscode.bukkitgradle.server.extension.ServerConfigurationImpl
Expand All @@ -16,12 +18,18 @@ public open class BukkitExtension(

public override var apiVersion: String = ServerConstants.DEFAULT_VERSION

private val logger = LoggerFactory.getLogger("BukkitExtension")

@Deprecated("Use 'server' instead", ReplaceWith("server"))
public val run: ServerConfigurationImpl
get() = server
get() {
logger.warnSyntaxChanged("bukkit.run", "bukkit.server")
return server
}

@Deprecated("Use 'server { ... }' instead", ReplaceWith("server(body)"))
public fun run(body: Closure<out ServerConfigurationImpl>) {
logger.warnSyntaxChanged("bukkit.run { ... }", "bukkit.server { ... }")
ConfigureUtil.configure(body, server)
}

Expand All @@ -43,6 +51,7 @@ public open class BukkitExtension(

@Deprecated("Use apiVersion instead of version.", ReplaceWith("apiVersion = version"))
public fun setVersion(version: String) {
logger.warnSyntaxChanged("bukkit.version = '...'", "bukkit.apiVersion = '...'")
apiVersion = version
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/dependencies/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ internal object Dependencies {
repoExtra["dmulloy2"] = closureOf<Any?> { repoHandler.addRepo("dmulloy2", URL_DMULLOY2) }
repoExtra["md5"] = closureOf<Any?> { repoHandler.addRepo("md5", URL_MD5) }
repoExtra["vault"] = closureOf<Any?> { repoHandler.addRepo("Vault", URL_VAULT) }
repoExtra["placeholderApi"] = closureOf<Any?> { repoHandler.addRepo("PlaceholderAPI", URL_PLACEHOLDERAPI) }
repoExtra["placeholderapi"] = closureOf<Any?> { repoHandler.addRepo("PlaceholderAPI", URL_PLACEHOLDERAPI) }
repoExtra["aikar"] = closureOf<Any?> { repoHandler.addRepo("aikar", URL_AIKAR) }

val depExtra = depHandler.extra
Expand Down
23 changes: 11 additions & 12 deletions src/main/kotlin/dependencies/DependenciesExtensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,14 @@ public fun RepositoryHandler.aikar(configure: MavenArtifactRepository.() -> Unit
addRepo("aikar", URL_AIKAR, configure)
}

public fun DependencyHandler.spigot(): String {
return api("org.spigotmc", "spigot", "mavenLocal")
}
public fun DependencyHandler.spigotApi(): String {
return api("org.spigotmc", "spigot-api", "spigot")
}
public fun DependencyHandler.bukkit(): String {
return api("org.bukkit", "bukkit", "spigot")
}
public fun DependencyHandler.paperApi(): String {
return api("com.destroystokyo.paper", "paper-api", "papermc")
}
public val DependencyHandler.spigot: String
get() = api("org.spigotmc", "spigot", "mavenLocal")

public val DependencyHandler.spigotApi: String
get() = api("org.spigotmc", "spigot-api", "spigot")

public val DependencyHandler.bukkit: String
get() = api("org.bukkit", "bukkit", "spigot")

public val DependencyHandler.paperApi: String
get() = api("com.destroystokyo.paper", "paper-api", "papermc")
12 changes: 12 additions & 0 deletions src/main/kotlin/extensions/Logger.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package ru.endlesscode.bukkitgradle.extensions

import org.slf4j.Logger

internal fun Logger.warnSyntaxChanged(oldSyntax: String, newSyntax: String) {
warn(
"""
Syntax $oldSyntax is deprecated and will be removed in 1.0
Replace it with: $newSyntax
""".trimIndent()
)
}
10 changes: 10 additions & 0 deletions src/main/kotlin/meta/extension/PluginMetaImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.gradle.kotlin.dsl.listProperty
import org.gradle.kotlin.dsl.property
import org.slf4j.LoggerFactory
import ru.endlesscode.bukkitgradle.extensions.warnSyntaxChanged

// TODO 1.0: Remove deprecated methods
public class PluginMetaImpl(objects: ObjectFactory) : PluginMeta {
Expand All @@ -16,33 +18,41 @@ public class PluginMetaImpl(objects: ObjectFactory) : PluginMeta {
override val url: Property<String> = objects.property()
override val authors: ListProperty<String> = objects.listProperty()

private val logger = LoggerFactory.getLogger("PluginMeta")

@Deprecated("Use property syntax instead", ReplaceWith("this.name.set(name)"))
public fun setName(name: String) {
logger.warnSyntaxChanged("bukkit.meta.name = '...'", "bukkit.meta.name.set('...')")
this.name.set(name)
}

@Deprecated("Use property syntax instead", ReplaceWith("this.description.set(description)"))
public fun setDescription(description: String) {
logger.warnSyntaxChanged("bukkit.meta.description = '...'", "bukkit.meta.description.set('...')")
this.description.set(description)
}

@Deprecated("Use property syntax instead", ReplaceWith("this.main.set(main)"))
public fun setMain(main: String) {
logger.warnSyntaxChanged("bukkit.meta.main = '...'", "bukkit.meta.main.set('...')")
this.main.set(main)
}

@Deprecated("Use property syntax instead", ReplaceWith("this.version.set(version)"))
public fun setVersion(version: String) {
logger.warnSyntaxChanged("bukkit.meta.version = '...'", "bukkit.meta.version.set('...')")
this.version.set(version)
}

@Deprecated("Use property syntax instead", ReplaceWith("this.url.set(url)"))
public fun setUrl(url: String) {
logger.warnSyntaxChanged("bukkit.meta.url = '...'", "bukkit.meta.url.set('...')")
this.url.set(url)
}

@Deprecated("Use property syntax instead", ReplaceWith("this.authors.set(authors)"))
public fun setAuthors(authors: List<String>) {
logger.warnSyntaxChanged("bukkit.meta.authors = [...]", "bukkit.meta.authors.set([...])")
this.authors.set(authors)
}

Expand Down
26 changes: 12 additions & 14 deletions src/main/kotlin/server/DevServerPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,16 @@ public class DevServerPlugin : Plugin<Project> {
val downloadPaperclip = registerDownloadPaperclip(coreVersion)
val copyServerCore = registerCopyServerCoreTask(buildServerCore, downloadPaperclip, serverDir)

val generateRunningScript = registerGenerateRunningScriptTask(serverDir)
val prepareServer = registerPrepareServerTask(copyServerCore, serverDir)
registerRunServerTask(generateRunningScript, prepareServer)
registerRunServerTask(prepareServer, serverDir)

registerBuildIdeRunTask(serverDir)
}

private fun registerBuildServerCoreTask(buildToolsDir: Provider<File>, coreVersion: Provider<String>): TaskProvider<BuildServerCore> {
private fun registerBuildServerCoreTask(
buildToolsDir: Provider<File>,
coreVersion: Provider<String>
): TaskProvider<BuildServerCore> {
val downloadBuildTools = tasks.register<Download>("downloadBuildTools") {
group = TASKS_GROUP_BUKKIT
description = "Download BuildTools"
Expand Down Expand Up @@ -95,14 +97,6 @@ public class DevServerPlugin : Plugin<Project> {
}
}

private fun registerGenerateRunningScriptTask(serverDir: Provider<Directory>): TaskProvider<GenerateRunningScript> {
return project.tasks.register<GenerateRunningScript>("generateRunningScript") {
jvmArgs.set(serverConfiguration.buildJvmArgs())
bukkitArgs.set(serverConfiguration.bukkitArgs)
scriptDir.set(serverDir)
}
}

private fun registerCopyServerCoreTask(
buildServerCore: TaskProvider<BuildServerCore>,
downloadPaperclip: TaskProvider<DownloadPaperclip>,
Expand Down Expand Up @@ -148,11 +142,13 @@ public class DevServerPlugin : Plugin<Project> {
}

private fun registerRunServerTask(
generateRunningScript: TaskProvider<GenerateRunningScript>,
prepareServer: TaskProvider<PrepareServer>
prepareServer: TaskProvider<PrepareServer>,
serverDir: Provider<Directory>
) {
tasks.register<RunServer>("runServer") {
scriptFile.set(generateRunningScript.map { it.scriptFile.get().asFile })
workingDir(serverDir)
jvmArgs = serverConfiguration.buildJvmArgs()
bukkitArgs = serverConfiguration.bukkitArgs
dependsOn(prepareServer)
}
}
Expand All @@ -161,6 +157,8 @@ public class DevServerPlugin : Plugin<Project> {
tasks.register<CreateIdeaJarRunConfiguration>("buildIdeaRun") {
configurationName.set("${project.name}: Run server")
beforeRunTask.set("prepareServer")
vmParameters.set(serverConfiguration.buildJvmArgs(debug = false))
programParameters.set(serverConfiguration.bukkitArgs)
configurationsDir.set(project.rootProject.layout.projectDirectory.dir(".idea/runConfigurations"))
jarPath.set(serverDir.map { it.file(ServerConstants.FILE_CORE).asFile })
}
Expand Down
12 changes: 3 additions & 9 deletions src/main/kotlin/server/extension/ServerConfiguration.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,10 @@ public interface ServerConfiguration {
public val onlineMode: Boolean
public val debug: Boolean
public val encoding: String
public val javaArgs: String
public val bukkitArgs: String
public val javaArgs: List<String>
public val bukkitArgs: List<String>
public val coreType: CoreType

/**
* Sets core from string.
* @see coreType
*/
public fun setCore(core: String)

/** Returns arguments for JVM. */
public fun buildJvmArgs(): String
public fun buildJvmArgs(debug: Boolean = this.debug): List<String>
}
25 changes: 20 additions & 5 deletions src/main/kotlin/server/extension/ServerConfigurationImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,17 @@ public class ServerConfigurationImpl : ServerConfiguration {
override var onlineMode: Boolean = false
override var debug: Boolean = true
override var encoding: String = "UTF-8"
override var javaArgs: String = "-Xmx1G"
override var bukkitArgs: String = ""

override var javaArgs: List<String> = listOf("-Xmx1G")
override var bukkitArgs: List<String> = listOf("nogui")

override var coreType: CoreType = CoreType.SPIGOT

override fun setCore(core: String) {
/**
* Sets core from string.
* @see coreType
*/
public fun setCore(core: String) {
try {
coreType = CoreType.valueOf(core.toUpperCase(Locale.ENGLISH))
} catch (_: IllegalArgumentException) {
Expand All @@ -33,8 +38,18 @@ public class ServerConfigurationImpl : ServerConfiguration {
}
}

override fun buildJvmArgs(): String {
return "${if (debug) "$DEBUG_ARGS " else ""}-Dfile.encoding=$encoding $javaArgs"
/** Append the given [args] to `javaArgs`. */
public fun javaArgs(vararg args: String) {
javaArgs = javaArgs + args.toList()
}

/** Append the given [args] to `bukkitArgs`. */
public fun bukkitArgs(vararg args: String) {
bukkitArgs = bukkitArgs + args.toList()
}

override fun buildJvmArgs(debug: Boolean): List<String> {
return listOfNotNull(DEBUG_ARGS.takeIf { debug }, "-Dfile.encoding=$encoding") + javaArgs
}

override fun toString(): String {
Expand Down
21 changes: 0 additions & 21 deletions src/main/kotlin/server/script/BashScriptStrategy.kt

This file was deleted.

40 changes: 0 additions & 40 deletions src/main/kotlin/server/script/RunningScriptStrategy.kt

This file was deleted.

Loading