Skip to content

Commit 50f82ae

Browse files
committed
kotlin: Move PrepareServer to Kotlin
1 parent 00caf24 commit 50f82ae

File tree

4 files changed

+97
-91
lines changed

4 files changed

+97
-91
lines changed

src/main/groovy/ru/endlesscode/bukkitgradle/server/legacy/LegacyDevServerPlugin.groovy

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ package ru.endlesscode.bukkitgradle.server.legacy
22

33
import org.gradle.api.Plugin
44
import org.gradle.api.Project
5+
import org.gradle.api.tasks.Copy
56
import org.gradle.api.tasks.TaskProvider
6-
import ru.endlesscode.bukkitgradle.BukkitGradlePlugin
7+
import org.gradle.jvm.tasks.Jar
8+
import ru.endlesscode.bukkitgradle.meta.extension.PluginMeta
79
import ru.endlesscode.bukkitgradle.server.ServerConstants
810
import ru.endlesscode.bukkitgradle.server.extension.RunConfiguration
9-
import ru.endlesscode.bukkitgradle.server.legacy.task.PrepareServer
1011
import ru.endlesscode.bukkitgradle.server.task.CreateIdeaJarRunConfiguration
1112
import ru.endlesscode.bukkitgradle.server.task.GenerateRunningScript
13+
import ru.endlesscode.bukkitgradle.server.task.PrepareServer
1214
import ru.endlesscode.bukkitgradle.server.task.RunServer
1315

1416
class LegacyDevServerPlugin implements Plugin<Project> {
@@ -23,13 +25,7 @@ class LegacyDevServerPlugin implements Plugin<Project> {
2325
scriptDir.set(serverCore.serverDir)
2426
}
2527

26-
def prepareServer = project.tasks.register('prepareServer', PrepareServer) {
27-
group = BukkitGradlePlugin.GROUP
28-
description = 'Prepare server ro run. Configure server and copy compiled plugin to plugins dir'
29-
core = serverCore
30-
dependsOn('build', 'copyServerCore')
31-
} as TaskProvider<PrepareServer>
32-
28+
def prepareServer = configurePrepareServerTask(project, serverCore)
3329
project.tasks.register('runServer', RunServer) {
3430
scriptFile.set(generateRunningScript.map { it.scriptFile.get().asFile })
3531
dependsOn(prepareServer)
@@ -39,7 +35,26 @@ class LegacyDevServerPlugin implements Plugin<Project> {
3935
configurationName.set("$project.name: Run server")
4036
beforeRunTask.set('prepareServer')
4137
configurationsDir.set(project.rootProject.layout.projectDirectory.dir('.idea/runConfigurations'))
42-
jarPath.set(prepareServer.map { it.serverDir.file(ServerConstants.FILE_CORE).get().asFile })
38+
jarPath.set(new File(serverCore.serverDir, ServerConstants.FILE_CORE))
39+
}
40+
}
41+
42+
private static TaskProvider<PrepareServer> configurePrepareServerTask(Project project, ServerCore serverCore) {
43+
def jarTaskName = project.plugins.hasPlugin("com.github.johnrengelman.shadow") ? "shadowJar" : "jar"
44+
def jarTask = project.tasks.named(jarTaskName, Jar) as TaskProvider<Jar>
45+
def meta = project.bukkit.meta as PluginMeta
46+
def copyPlugins = project.tasks.register("copyPlugins", Copy) {
47+
from(jarTask)
48+
into(project.mkdir(new File(serverCore.serverDir, "plugins")))
49+
rename { "${meta.name.get()}.jar" }
50+
}
51+
52+
def run = project.bukkit.run as RunConfiguration
53+
return project.tasks.register('prepareServer', PrepareServer) {
54+
serverDir.set(serverCore.serverDir)
55+
eula = run.eula
56+
onlineMode = run.onlineMode
57+
dependsOn('copyServerCore', copyPlugins)
4358
}
4459
}
4560
}

src/main/groovy/ru/endlesscode/bukkitgradle/server/legacy/task/PrepareServer.groovy

Lines changed: 0 additions & 81 deletions
This file was deleted.

src/main/kotlin/Bukkit.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package ru.endlesscode.bukkitgradle
33
import org.gradle.api.Project
44
import org.gradle.kotlin.dsl.getByType
55
import ru.endlesscode.bukkitgradle.meta.extension.PluginMeta
6+
import ru.endlesscode.bukkitgradle.server.extension.RunConfiguration
67

78
public interface Bukkit {
89
public val meta: PluginMeta
10+
public val run: RunConfiguration
911
}
1012

1113
internal val Project.bukkit: Bukkit get() = extensions.getByType()
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package ru.endlesscode.bukkitgradle.server.task
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.file.DirectoryProperty
5+
import org.gradle.api.file.RegularFile
6+
import org.gradle.api.model.ObjectFactory
7+
import org.gradle.api.provider.Provider
8+
import org.gradle.api.tasks.Input
9+
import org.gradle.api.tasks.Internal
10+
import org.gradle.api.tasks.OutputFile
11+
import org.gradle.api.tasks.TaskAction
12+
import ru.endlesscode.bukkitgradle.TASKS_GROUP_BUKKIT
13+
import java.util.*
14+
import javax.inject.Inject
15+
16+
internal open class PrepareServer @Inject constructor(objects: ObjectFactory) : DefaultTask() {
17+
18+
@Internal
19+
val serverDir: DirectoryProperty = objects.directoryProperty()
20+
21+
@Input
22+
var eula: Boolean = false
23+
24+
@Input
25+
var onlineMode: Boolean = true
26+
27+
@OutputFile
28+
val eulaFile: Provider<RegularFile> = serverDir.map { it.file("eula.txt") }
29+
30+
@OutputFile
31+
val propertiesFile: Provider<RegularFile> = serverDir.map { it.file("server.properties") }
32+
33+
init {
34+
group = TASKS_GROUP_BUKKIT
35+
description = "Prepare server to run. Configure eula and online-mode."
36+
}
37+
38+
@TaskAction
39+
fun prepareServer() {
40+
resolveEula()
41+
resolveOnlineMode()
42+
}
43+
44+
private fun resolveEula() {
45+
val eulaFile = eulaFile.get().asFile
46+
if (!eulaFile.exists()) {
47+
eulaFile.createNewFile()
48+
}
49+
50+
val properties = Properties()
51+
properties.load(eulaFile.reader())
52+
properties.setProperty("eula", "$eula")
53+
properties.store(
54+
eulaFile.writer(),
55+
"By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula)."
56+
)
57+
}
58+
59+
private fun resolveOnlineMode() {
60+
val propsFile = propertiesFile.get().asFile
61+
if (!propsFile.exists()) {
62+
propsFile.createNewFile()
63+
}
64+
65+
val properties = Properties()
66+
properties.load(propsFile.reader())
67+
properties.setProperty("online-mode", "$onlineMode")
68+
properties.store(propsFile.writer(), "Minecraft server properties")
69+
}
70+
}

0 commit comments

Comments
 (0)