User: kyle wood Date: 05 Nov 25 01:45 Revision: 5c6174c4242f8fb0aedc5962870b3fbd6c0ac89f Summary: Merge branch '2025.2' into 2025.3 TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10221&personal=false Index: build.gradle.kts =================================================================== --- build.gradle.kts (revision 0f55d27acdf3b772c5a51ba8a9dc044a1d1ef2cc) +++ build.gradle.kts (revision 5c6174c4242f8fb0aedc5962870b3fbd6c0ac89f) @@ -18,7 +18,8 @@ * along with this program. If not, see . */ -import org.gradle.internal.jvm.Jvm +import io.sentry.android.gradle.extensions.SentryPluginExtension +import org.gradle.kotlin.dsl.configure import org.jetbrains.changelog.Changelog import org.jetbrains.gradle.ext.settings import org.jetbrains.gradle.ext.taskTriggers @@ -32,6 +33,7 @@ `mcdev-core` `mcdev-parsing` `mcdev-publishing` + alias(libs.plugins.sentry) apply (System.getenv("CI") == "true" && System.getenv("NO_SENTRY") != "true") } val coreVersion: String by project @@ -43,32 +45,32 @@ group = "com.demonwav.mcdev" -val gradleToolingExtensionSourceSet: SourceSet = sourceSets.create("gradle-tooling-extension") { +val gradleToolingExtensionSourceSet: SourceSet = sourceSets.create("gradle-tooling-extension", Action { configurations.named(compileOnlyConfigurationName) { extendsFrom(gradleToolingExtension) } -} +}) val gradleToolingExtensionJar = tasks.register(gradleToolingExtensionSourceSet.jarTaskName) { from(gradleToolingExtensionSourceSet.output) archiveClassifier.set("gradle-tooling-extension") exclude("META-INF/plugin.xml") } -val templatesSourceSet: SourceSet = sourceSets.create("templates") { +val templatesSourceSet: SourceSet = sourceSets.create("templates", Action { resources { srcDir("templates") compileClasspath += sourceSets.main.get().output } -} +}) val templateSourceSets: List = (file("templates").listFiles() ?: emptyArray()).mapNotNull { file -> if (file.isDirectory() && (file.listFiles() ?: emptyArray()).any { it.name.endsWith(".mcdev.template.json") }) { - sourceSets.create("templates-${file.name}") { + sourceSets.create("templates-${file.name}", Action { resources { srcDir(file) compileClasspath += sourceSets.main.get().output } - } + }) } else { null } @@ -81,9 +83,6 @@ } dependencies { - // Add tools.jar for the JDI API - implementation(files(Jvm.current().toolsJar)) - implementation(files(gradleToolingExtensionJar)) implementation(libs.mixinExtras.expressions) { @@ -99,6 +98,9 @@ exclude(group = "org.jetbrains.kotlin") exclude(group = "org.jetbrains.kotlinx") } + implementation(libs.sentry) { + exclude(group = "org.slf4j") + } intellijPlatform { intellijIdea(libs.versions.intellij.ide) { @@ -173,20 +175,17 @@ changeNotes = changelog.render(Changelog.OutputType.HTML) } -// Compile classes to be loaded into the Gradle VM to Java 5 to match Groovy +// Compile classes to be loaded into the Gradle VM to Java 8 // This is for maximum compatibility, these classes will be loaded into every Gradle import on all // projects (not just Minecraft), so we don't want to break that with an incompatible class version. tasks.named(gradleToolingExtensionSourceSet.compileJavaTaskName, JavaCompile::class) { - val java7Compiler = javaToolchains.compilerFor { languageVersion.set(JavaLanguageVersion.of(11)) } - javaCompiler.set(java7Compiler) - options.release.set(6) - options.bootstrapClasspath = files(java7Compiler.map { it.metadata.installationPath.file("jre/lib/rt.jar") }) + options.release = 8 options.compilerArgs = listOf("-Xlint:-options") } tasks.withType().configureEach { options.compilerArgs = listOf("-proc:none") - sourceCompatibility = "1.5" - targetCompatibility = "1.5" + sourceCompatibility = "1.8" + targetCompatibility = "1.8" } tasks.processResources { @@ -223,6 +222,7 @@ license { val endings = listOf("java", "kt", "kts", "groovy", "gradle.kts", "xml", "properties", "html", "flex", "bnf") exclude("META-INF/plugin.xml") // https://youtrack.jetbrains.com/issue/IDEA-345026 + exclude("sentry-debug-meta.properties", "sentry-external-modules.txt") include(endings.map { "**/*.$it" }) val projectDir = layout.projectDirectory.asFile @@ -269,8 +269,8 @@ val generateAtLexer by lexer("AtLexer", "com/demonwav/mcdev/platform/mcp/at/gen") val generateAtParser by parser("AtParser", "com/demonwav/mcdev/platform/mcp/at/gen") -val generateAwLexer by lexer("AwLexer", "com/demonwav/mcdev/platform/mcp/aw/gen") -val generateAwParser by parser("AwParser", "com/demonwav/mcdev/platform/mcp/aw/gen") +val generateCtLexer by lexer("CtLexer", "com/demonwav/mcdev/platform/mcp/ct/gen") +val generateCtParser by parser("CtParser", "com/demonwav/mcdev/platform/mcp/ct/gen") val generateNbttLexer by lexer("NbttLexer", "com/demonwav/mcdev/nbt/lang/gen") val generateNbttParser by parser("NbttParser", "com/demonwav/mcdev/nbt/lang/gen") @@ -293,8 +293,8 @@ dependsOn( generateAtLexer, generateAtParser, - generateAwLexer, - generateAwParser, + generateCtLexer, + generateCtParser, generateNbttLexer, generateNbttParser, generateLangLexer, @@ -339,3 +339,29 @@ // systemProperty("user.language", "fr") // systemProperty("user.country", "FR") } + +if (System.getenv("CI") == "true" && System.getenv("NO_SENTRY") != "true") { + configure { + includeSourceContext = true + includeDependenciesReport = true + autoInstallation { + enabled = false + } + + url = "https://sentry.mcdev.io/" + org = "mcdev" + projectName = "mcdev" + authToken = providers.gradleProperty("mcdev.sentry.token") + } + + // Wire together some tasks to make Gradle happy + tasks.named("generateSentryBundleIdJava") { + dependsOn(generate) + } + tasks.named("sentryCollectSourcesJava") { + dependsOn(generate) + } + tasks.checkLicenseMain { + dependsOn(tasks.named("generateSentryDebugMetaPropertiesjava"), tasks.named("collectExternalDependenciesForSentry")) + } +} Index: gradle.properties =================================================================== --- gradle.properties (revision 0f55d27acdf3b772c5a51ba8a9dc044a1d1ef2cc) +++ gradle.properties (revision 5c6174c4242f8fb0aedc5962870b3fbd6c0ac89f) @@ -23,7 +23,7 @@ ideaVersionName = 2025.3 -coreVersion = 1.8.6 +coreVersion = 1.8.7 # Silences a build-time warning because we are bundling our own kotlin library kotlin.stdlib.default.dependency = false Index: gradle/libs.versions.toml =================================================================== --- gradle/libs.versions.toml (revision 0f55d27acdf3b772c5a51ba8a9dc044a1d1ef2cc) +++ gradle/libs.versions.toml (revision 5c6174c4242f8fb0aedc5962870b3fbd6c0ac89f) @@ -7,7 +7,7 @@ junit-platform = "1.10.2" asm = "9.9" fuel = "2.3.1" -licenser = "0.6.1" +licenser = "0.7.5" changelog = "2.2.0" # https://github.com/JetBrains/intellij-platform-gradle-plugin intellij-plugin = "2.10.1" @@ -24,8 +24,9 @@ kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } intellij-platform = { id = "org.jetbrains.intellij.platform", version.ref = "intellij-plugin" } idea-ext = { id = "org.jetbrains.gradle.plugin.idea-ext", version.ref = "idea-ext" } -licenser = { id = "org.cadixdev.licenser", version.ref = "licenser" } +licenser = { id = "net.neoforged.licenser", version.ref = "licenser" } changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" } +sentry = "io.sentry.jvm.gradle:5.12.2" [libraries] intellij-plugin-repository-rest-client = { module = "org.jetbrains.intellij:plugin-repository-rest-client", version.ref = "intellij-plugin-repository-rest-client" } @@ -35,7 +36,7 @@ kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } intellij-plugin = { module = "org.jetbrains.intellij.platform:org.jetbrains.intellij.platform.gradle.plugin", version.ref = "intellij-plugin" } -licenser-plugin = { module = "org.cadixdev.licenser:org.cadixdev.licenser.gradle.plugin", version.ref = "licenser" } +licenser-plugin = { module = "net.neoforged.licenser:net.neoforged.licenser.gradle.plugin", version.ref = "licenser" } changelog-plugin = { module = "org.jetbrains.changelog:org.jetbrains.changelog.gradle.plugin", version.ref = "changelog" } coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" } @@ -64,6 +65,8 @@ fuel = { module = "com.github.kittinunf.fuel:fuel", version.ref = "fuel" } fuel-coroutines = { module = "com.github.kittinunf.fuel:fuel-coroutines", version.ref = "fuel" } +sentry = "io.sentry:sentry:8.22.0" + # Testing test-mixin = "org.spongepowered:mixin:0.8.5" test-spigotapi = "org.spigotmc:spigot-api:1.21-R0.1-SNAPSHOT" Index: src/main/kotlin/platform/mixin/util/AsmUtil.kt =================================================================== --- src/main/kotlin/platform/mixin/util/AsmUtil.kt (revision 0f55d27acdf3b772c5a51ba8a9dc044a1d1ef2cc) +++ src/main/kotlin/platform/mixin/util/AsmUtil.kt (revision 5c6174c4242f8fb0aedc5962870b3fbd6c0ac89f) @@ -22,7 +22,7 @@ import com.demonwav.mcdev.platform.mixin.reference.MixinSelector import com.demonwav.mcdev.util.MemberReference -import com.demonwav.mcdev.util.anonymousElements +import com.demonwav.mcdev.util.anonymousClasses import com.demonwav.mcdev.util.cached import com.demonwav.mcdev.util.childrenOfType import com.demonwav.mcdev.util.findField @@ -389,7 +389,7 @@ // find innermost PsiClass while (true) { clazz = clazz.innerClasses.firstOrNull() - ?: clazz.anonymousElements.lastOrNull { it !== clazz && it is PsiClass } as? PsiClass + ?: clazz.anonymousClasses.lastOrNull() ?: clazz.localClasses.lastOrNull() ?: break }