@@ -14,12 +14,17 @@ import org.gradle.internal.os.OperatingSystem
1414import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1515
1616plugins {
17- kotlin(" jvm" ) version " 1.4.32 "
17+ kotlin(" jvm" ) version " 1.6.10 "
1818 java
1919 mcdev
2020 groovy
2121 idea
22- id(" org.jetbrains.intellij" ) version " 1.3.0"
22+ val ijPluginVersion = if (System .getProperty(" mcdev.localdev" ).toBoolean()) {
23+ " 1.1.3"
24+ } else {
25+ " 1.3.0"
26+ }
27+ id(" org.jetbrains.intellij" ) version ijPluginVersion
2328 id(" org.cadixdev.licenser" ) version " 0.6.1"
2429 id(" org.jlleitschuh.gradle.ktlint" ) version " 10.0.0"
2530}
@@ -46,6 +51,12 @@ val testLibs: Configuration by configurations.creating {
4651group = " com.demonwav.minecraft-dev"
4752version = " $ideaVersionName -$coreVersion "
4853
54+ java {
55+ toolchain {
56+ languageVersion.set(JavaLanguageVersion .of(11 ))
57+ }
58+ }
59+
4960val gradleToolingExtensionSourceSet: SourceSet = sourceSets.create(" gradle-tooling-extension" ) {
5061 configurations.named(compileOnlyConfigurationName) {
5162 extendsFrom(gradleToolingExtension)
@@ -57,17 +68,8 @@ val gradleToolingExtensionJar = tasks.register<Jar>(gradleToolingExtensionSource
5768}
5869
5970repositories {
60- mavenCentral()
6171 maven(" https://repo.denwav.dev/repository/maven-public/" )
62- maven(" https://repo.spongepowered.org/maven" )
63- if (! ideaVersion.endsWith(" SNAPSHOT" )) {
64- maven(" https://www.jetbrains.com/intellij-repository/releases" )
65- } else {
66- maven(" https://www.jetbrains.com/intellij-repository/snapshots" )
67- }
68- maven(" https://cache-redirector.jetbrains.com/intellij-dependencies" )
69- maven(" https://repo.gradle.org/gradle/libs-releases-local/" )
70- maven(" https://maven.extracraftx.com" )
72+ mavenCentral()
7173}
7274
7375dependencies {
@@ -82,19 +84,28 @@ dependencies {
8284 implementation(files(gradleToolingExtensionJar))
8385
8486 implementation(libs.templateMakerFabric)
85-
86- implementation(" org.ow2.asm:asm:9.2" )
87- implementation(" org.ow2.asm:asm-tree:9.2" )
88- implementation(" org.ow2.asm:asm-analysis:9.2" )
87+ implementation(libs.bundles.asm)
8988
9089 jflex(libs.jflex.lib)
91- jflexSkeleton(" ${libs.jflex.skeleton.text()} @skeleton" )
90+ jflexSkeleton(libs.jflex.skeleton) {
91+ artifact {
92+ extension = " skeleton"
93+ }
94+ }
9295 grammarKit(libs.grammarKit)
9396
9497 testLibs(libs.test.mockJdk)
9598 testLibs(libs.test.mixin)
96- testLibs(" ${libs.test.spongeapi.text()} :shaded" )
97- testLibs(" ${libs.test.nbt.text()} @nbt" )
99+ testLibs(libs.test.spongeapi) {
100+ artifact {
101+ classifier = " shaded"
102+ }
103+ }
104+ testLibs(libs.test.nbt) {
105+ artifact {
106+ extension = " nbt"
107+ }
108+ }
98109 testLibs(project(" :mixin-test-data" ))
99110
100111 // For non-SNAPSHOT versions (unless Jetbrains fixes this...) find the version with:
@@ -155,7 +166,7 @@ java {
155166tasks.withType<JavaCompile >().configureEach {
156167 options.encoding = " UTF-8"
157168 options.compilerArgs = listOf (" -proc:none" )
158- options.release.set(8 )
169+ options.release.set(11 )
159170}
160171
161172tasks.withType<KotlinCompile >().configureEach {
@@ -165,6 +176,18 @@ tasks.withType<KotlinCompile>().configureEach {
165176 }
166177}
167178
179+ // Compile classes to be loaded into the Gradle VM to Java 5 to match Groovy
180+ // This is for maximum compatibility, these classes will be loaded into every Gradle import on all
181+ // projects (not just Minecraft), so we don't want to break that with an incompatible class version.
182+ tasks.named(gradleToolingExtensionSourceSet.compileJavaTaskName, JavaCompile ::class ) {
183+ val java7Compiler = javaToolchains.compilerFor { languageVersion.set(JavaLanguageVersion .of(8 )) }
184+ javaCompiler.set(java7Compiler)
185+ options.release.set(null as Int? )
186+ sourceCompatibility = " 1.5"
187+ targetCompatibility = " 1.5"
188+ options.bootstrapClasspath = files(java7Compiler.map { it.metadata.installationPath.file(" jre/lib/rt.jar" ) })
189+ options.compilerArgs = listOf (" -Xlint:-options" )
190+ }
168191tasks.withType<GroovyCompile >().configureEach {
169192 options.compilerArgs = listOf (" -proc:none" )
170193 sourceCompatibility = " 1.5"
@@ -189,26 +212,33 @@ tasks.processResources {
189212}
190213
191214tasks.test {
192- dependsOn(testLibs)
215+ dependsOn(tasks.jar, testLibs)
193216 useJUnitPlatform()
194217 doFirst {
195218 testLibs.resolvedConfiguration.resolvedArtifacts.forEach {
196219 systemProperty(" testLibs.${it.name} " , it.file.absolutePath)
197220 }
198221 }
199222 systemProperty(" NO_FS_ROOTS_ACCESS_CHECK" , " true" )
200- if (JavaVersion .current().isJava9Compatible) {
201- jvmArgs(
202- " --add-opens" , " java.base/java.io=ALL-UNNAMED" ,
203- " --add-opens" , " java.base/java.lang=ALL-UNNAMED" ,
204- " --add-opens" , " java.desktop/sun.awt=ALL-UNNAMED" ,
205- " --add-opens" , " java.desktop/java.awt=ALL-UNNAMED" ,
206- " --add-opens" , " java.desktop/javax.swing=ALL-UNNAMED" ,
207- " --add-opens" , " java.desktop/javax.swing.plaf.basic=ALL-UNNAMED" ,
208- " --add-opens" , " java.desktop/sun.font=ALL-UNNAMED" ,
209- " --add-opens" , " java.desktop/sun.swing=ALL-UNNAMED"
210- )
211- }
223+
224+ jvmArgs(
225+ " --add-opens" , " java.base/java.io=ALL-UNNAMED" ,
226+ " --add-opens" , " java.base/java.lang.invoke=ALL-UNNAMED" ,
227+ " --add-opens" , " java.base/java.lang.ref=ALL-UNNAMED" ,
228+ " --add-opens" , " java.base/java.lang.reflect=ALL-UNNAMED" ,
229+ " --add-opens" , " java.base/java.lang=ALL-UNNAMED" ,
230+ " --add-opens" , " java.base/java.util.concurrent.atomic=ALL-UNNAMED" ,
231+ " --add-opens" , " java.base/java.util.concurrent.locks=ALL-UNNAMED" ,
232+ " --add-opens" , " java.base/java.util.concurrent=ALL-UNNAMED" ,
233+ " --add-opens" , " java.base/sun.nio.fs=ALL-UNNAMED" ,
234+ " --add-opens" , " java.desktop/java.awt.event=ALL-UNNAMED" ,
235+ " --add-opens" , " java.desktop/java.awt=ALL-UNNAMED" ,
236+ " --add-opens" , " java.desktop/javax.swing.plaf.basic=ALL-UNNAMED" ,
237+ " --add-opens" , " java.desktop/javax.swing=ALL-UNNAMED" ,
238+ " --add-opens" , " java.desktop/sun.awt=ALL-UNNAMED" ,
239+ " --add-opens" , " java.desktop/sun.font=ALL-UNNAMED" ,
240+ " --add-opens" , " java.desktop/sun.swing=ALL-UNNAMED" ,
241+ )
212242}
213243
214244idea {
@@ -342,10 +372,10 @@ tasks.buildSearchableOptions {
342372 " --add-exports=java.base/jdk.internal.vm=ALL-UNNAMED" ,
343373 " --add-opens=java.base/java.lang=ALL-UNNAMED" ,
344374 " --add-opens=java.base/java.util=ALL-UNNAMED" ,
345- " --add-opens=java.desktop/java.awt=ALL-UNNAMED" ,
346375 " --add-opens=java.desktop/java.awt.event=ALL-UNNAMED" ,
347- " --add-opens=java.desktop/javax.swing =ALL-UNNAMED" ,
376+ " --add-opens=java.desktop/java.awt =ALL-UNNAMED" ,
348377 " --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED" ,
378+ " --add-opens=java.desktop/javax.swing=ALL-UNNAMED" ,
349379 " --add-opens=java.desktop/sun.awt=ALL-UNNAMED" ,
350380 " --add-opens=java.desktop/sun.font=ALL-UNNAMED" ,
351381 " --add-opens=java.desktop/sun.swing=ALL-UNNAMED"
@@ -355,10 +385,3 @@ tasks.buildSearchableOptions {
355385 jvmArgs(" --add-opens=java.desktop/com.apple.eawt.event=ALL-UNNAMED" )
356386 }
357387}
358-
359- // version catalogs still have rough edges as it's still experimental
360- // this lets us get around some of that while still getting the benefits of using catalogs
361- fun Provider<MinimalExternalModuleDependency>.text (): String {
362- val dep = get()
363- return " ${dep.module.group} :${dep.module.name} :${dep.versionConstraint} "
364- }
0 commit comments