1
1
package ru.endlesscode.bukkitgradle
2
2
3
- import org.gradle.api.JavaVersion
4
3
import org.gradle.api.Plugin
5
4
import org.gradle.api.Project
6
5
import org.gradle.api.plugins.JavaPluginExtension
7
6
import org.gradle.api.tasks.compile.JavaCompile
7
+ import org.gradle.jvm.toolchain.JavaLanguageVersion
8
8
import org.gradle.kotlin.dsl.*
9
9
import ru.endlesscode.bukkitgradle.dependencies.Dependencies
10
10
import ru.endlesscode.bukkitgradle.meta.PluginMetaPlugin
11
11
import ru.endlesscode.bukkitgradle.meta.extension.PluginMetaImpl
12
+ import ru.endlesscode.bukkitgradle.meta.util.MinecraftVersion
12
13
import ru.endlesscode.bukkitgradle.meta.util.StringUtils
14
+ import ru.endlesscode.bukkitgradle.meta.util.parsedApiVersion
13
15
import ru.endlesscode.bukkitgradle.server.DevServerPlugin
14
16
import ru.endlesscode.bukkitgradle.server.extension.ServerConfigurationImpl
15
17
@@ -28,7 +30,7 @@ public class BukkitGradlePlugin : Plugin<Project> {
28
30
29
31
/* * Adds needed plugins. */
30
32
private fun Project.addPlugins () {
31
- extensions.create<BukkitExtension >(" bukkit" , configurePluginMeta(), ServerConfigurationImpl ())
33
+ val bukkit = extensions.create<BukkitExtension >(" bukkit" , configurePluginMeta(), ServerConfigurationImpl ())
32
34
33
35
with (plugins) {
34
36
apply (" java" )
@@ -37,8 +39,9 @@ public class BukkitGradlePlugin : Plugin<Project> {
37
39
}
38
40
39
41
extensions.configure<JavaPluginExtension > {
40
- sourceCompatibility = JavaVersion .VERSION_1_8
41
- targetCompatibility = JavaVersion .VERSION_1_8
42
+ toolchain {
43
+ languageVersion.convention(provider { resolveRecommendedJavaVersion(bukkit.parsedApiVersion) })
44
+ }
42
45
}
43
46
}
44
47
@@ -48,7 +51,7 @@ public class BukkitGradlePlugin : Plugin<Project> {
48
51
description.convention(provider { project.description })
49
52
main.convention(name.map { " ${project.group} .${StringUtils .toPascalCase(it)} " })
50
53
version.convention(provider { project.version.toString() })
51
- apiVersion.convention(provider { StringUtils .parseApiVersion (bukkit.apiVersion ) })
54
+ apiVersion.convention(provider { resolveDefaultApiVersion (bukkit.parsedApiVersion ) })
52
55
url.convention(provider { providers.gradleProperty(" url" ).orNull })
53
56
}
54
57
}
@@ -66,4 +69,20 @@ public class BukkitGradlePlugin : Plugin<Project> {
66
69
mavenCentral()
67
70
}
68
71
}
72
+
73
+ private fun resolveDefaultApiVersion (version : MinecraftVersion ): String? = when {
74
+ // "API version" has been introduced in Spigot 1.13
75
+ version < MinecraftVersion .V1_13_0 -> null
76
+ // From 1.20.5 and onward, a patch version is supported.
77
+ version < MinecraftVersion .V1_20_5 -> version.withoutPatch().toString()
78
+ else -> version.toString()
79
+ }
80
+
81
+ // See: https://docs.papermc.io/paper/getting-started#requirements
82
+ private fun resolveRecommendedJavaVersion (version : MinecraftVersion ): JavaLanguageVersion = when {
83
+ version >= MinecraftVersion .V1_17_1 -> JavaLanguageVersion .of(21 )
84
+ version >= MinecraftVersion .V1_16_5 -> JavaLanguageVersion .of(16 )
85
+ version >= MinecraftVersion .V1_12_0 -> JavaLanguageVersion .of(11 )
86
+ else -> JavaLanguageVersion .of(8 )
87
+ }
69
88
}
0 commit comments