User: rednesto Date: 14 Jul 24 11:33 Revision: 03d5aaaa2f72399dd13d7d1637dceffa60a5d3ad Summary: Merge branch '2024.1' into 2024.2 # Conflicts: # build.gradle.kts TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9448&personal=false Index: build.gradle.kts =================================================================== --- build.gradle.kts (revision 01f85cf6c72e9edb6a2f5375248471b3935ce89b) +++ build.gradle.kts (revision 03d5aaaa2f72399dd13d7d1637dceffa60a5d3ad) @@ -21,6 +21,7 @@ import org.cadixdev.gradle.licenser.header.HeaderStyle import org.cadixdev.gradle.licenser.tasks.LicenseUpdate import org.gradle.internal.jvm.Jvm +import org.jetbrains.changelog.Changelog import org.jetbrains.intellij.platform.gradle.TestFrameworkType import org.jetbrains.intellij.platform.gradle.tasks.PrepareSandboxTask import org.jetbrains.intellij.platform.gradle.tasks.PublishPluginTask @@ -37,6 +38,7 @@ id("org.jetbrains.intellij.platform") version "2.0.0-beta8" id("org.cadixdev.licenser") id("org.jlleitschuh.gradle.ktlint") version "10.3.0" + id("org.jetbrains.changelog") version "2.2.0" } val ideaVersion: String by project @@ -75,6 +77,26 @@ exclude("META-INF/plugin.xml") } +val templatesSourceSet: SourceSet = sourceSets.create("templates") { + 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}") { + resources { + srcDir(file) + compileClasspath += sourceSets.main.get().output + } + } + } else { + null + } +} + val externalAnnotationsJar = tasks.register("externalAnnotationsJar") { from("externalAnnotations") destinationDirectory.set(layout.buildDirectory.dir("externalAnnotations")) @@ -86,9 +108,11 @@ maven("https://maven.fabricmc.net/") { content { includeModule("net.fabricmc", "mapping-io") + includeModule("net.fabricmc", "fabric-loader") } } mavenCentral() + maven("https://repo.spongepowered.org/maven/") intellijPlatform { defaultRepositories() @@ -110,6 +134,10 @@ // Add tools.jar for the JDI API implementation(files(Jvm.current().toolsJar)) + implementation(libs.mixinExtras.expressions) + testLibs(libs.mixinExtras.common) + implementation("org.ow2.asm:asm-util:9.3") + // Kotlin implementation(kotlin("stdlib-jdk8")) implementation(kotlin("reflect")) @@ -141,6 +169,7 @@ // For some reason the Kotlin plugin can't be resolved... bundledPlugin("org.jetbrains.kotlin") bundledPlugin("ByteCodeViewer") + bundledPlugin("org.intellij.intelliLang") bundledPlugin("com.intellij.properties") bundledPlugin("org.toml.lang") @@ -162,6 +191,7 @@ classifier = "shaded" } } + testLibs(libs.test.fabricloader) testLibs(libs.test.nbt) { artifact { extension = "nbt" @@ -207,6 +237,12 @@ attributes.attribute(filtered, true) } +changelog { + version = coreVersion + groups.empty() + path = "changelog.md" +} + intellijPlatform { sandboxContainer.set(layout.projectDirectory.dir(".sandbox")) @@ -217,6 +253,11 @@ } } +tasks.patchPluginXml { + val changelog = project.changelog + changeNotes = changelog.render(Changelog.OutputType.HTML) +} + tasks.withType { // Build numbers are used for properties["buildNumber"]?.let { buildNumber -> @@ -364,8 +405,14 @@ val generateLangLexer by lexer("LangLexer", "com/demonwav/mcdev/translations/lang/gen") val generateLangParser by parser("LangParser", "com/demonwav/mcdev/translations/lang/gen") -val generateTranslationTemplateLexer by lexer("TranslationTemplateLexer", "com/demonwav/mcdev/translations/lang/gen") +val generateMEExpressionLexer by lexer("MEExpressionLexer", "com/demonwav/mcdev/platform/mixin/expression/gen") +val generateMEExpressionParser by parser("MEExpressionParser", "com/demonwav/mcdev/platform/mixin/expression/gen") +val generateTranslationTemplateLexer by lexer( + "TranslationTemplateLexer", + "com/demonwav/mcdev/translations/template/gen" +) + val generate by tasks.registering { group = "minecraft" description = "Generates sources needed to compile the plugin." @@ -379,6 +426,8 @@ generateNbttParser, generateLangLexer, generateLangParser, + generateMEExpressionLexer, + generateMEExpressionParser, generateTranslationTemplateLexer, ) } @@ -395,10 +444,15 @@ } tasks.withType { + pluginJar.set(tasks.jar.get().archiveFile) from(externalAnnotationsJar) { into("MinecraftDev/lib/resources") } + from("templates") { + exclude(".git") + into("Minecraft Development/lib/resources/builtin-templates") -} + } +} tasks.runIde { maxHeapSize = "4G" @@ -408,8 +462,8 @@ systemProperty("idea.debug.mode", "true") } // Set these properties to test different languages - // systemProperty("user.language", "en") - // systemProperty("user.country", "US") + // systemProperty("user.language", "fr") + // systemProperty("user.country", "FR") } tasks.buildSearchableOptions { @@ -417,6 +471,14 @@ enabled = false } +tasks.instrumentCode { + enabled = false +} + +tasks.instrumentedJar { + enabled = false +} + tasks.verifyPluginProjectConfiguration { // Breaks since IJGP 2.0.0-beta5 :( setDependsOn(emptyList()) Index: gradle.properties =================================================================== --- gradle.properties (revision 01f85cf6c72e9edb6a2f5375248471b3935ce89b) +++ gradle.properties (revision 03d5aaaa2f72399dd13d7d1637dceffa60a5d3ad) @@ -24,7 +24,7 @@ ideaVersion = 242.19890.14-EAP-SNAPSHOT ideaVersionName = 2024.2 -coreVersion = 1.7.6 +coreVersion = 1.8.0 downloadIdeaSources = true # Silences a build-time warning because we are bundling our own kotlin library Index: gradle/libs.versions.toml =================================================================== --- gradle/libs.versions.toml (revision 01f85cf6c72e9edb6a2f5375248471b3935ce89b) +++ gradle/libs.versions.toml (revision 03d5aaaa2f72399dd13d7d1637dceffa60a5d3ad) @@ -11,6 +11,7 @@ coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" } mappingIo = "net.fabricmc:mapping-io:0.2.1" +mixinExtras-expressions = "io.github.llamalad7:mixinextras-expressions:0.0.1" # GrammarKit jflex-lib = "org.jetbrains.idea:jflex:1.7.0-b7f882a" @@ -33,12 +34,15 @@ test-mockJdk = "org.jetbrains.idea:mock-jdk:1.7-4d76c50" test-mixin = "org.spongepowered:mixin:0.8.5" test-spongeapi = "org.spongepowered:spongeapi:7.4.0" +test-fabricloader = "net.fabricmc:fabric-loader:0.15.11" test-nbt = "com.demonwav.mcdev:all-types-nbt:1.0" junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } junit-entine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junit-platform" } +mixinExtras-common = "io.github.llamalad7:mixinextras-common:0.5.0-beta.1" + [bundles] coroutines = ["coroutines-swing"] asm = ["asm", "asm-tree", "asm-analysis"] Index: src/main/kotlin/platform/sponge/inspection/SpongeInjectionInspection.kt =================================================================== --- src/main/kotlin/platform/sponge/inspection/SpongeInjectionInspection.kt (revision 01f85cf6c72e9edb6a2f5375248471b3935ce89b) +++ src/main/kotlin/platform/sponge/inspection/SpongeInjectionInspection.kt (revision 03d5aaaa2f72399dd13d7d1637dceffa60a5d3ad) @@ -244,11 +244,13 @@ ) } } - "ninja.leaping.configurate.loader.ConfigurationLoader" -> { + "ninja.leaping.configurate.loader.ConfigurationLoader", + "org.spongepowered.configurate.reference.ConfigurationReference", + "org.spongepowered.configurate.loader.ConfigurationLoader" -> { if (defaultConfig == null) { holder.registerProblem( variable.nameIdentifier ?: variable, - "Injected ConfigurationLoader must be annotated with @DefaultConfig.", + "Injected ${classType.name} must be annotated with @DefaultConfig.", ProblemHighlightType.GENERIC_ERROR, AddAnnotationFix(SpongeConstants.DEFAULT_CONFIG_ANNOTATION, annotationsOwner), ) @@ -257,7 +259,7 @@ if (configDir != null) { holder.registerProblem( configDir, - "Injected ConfigurationLoader cannot be annotated with @ConfigDir.", + "Injected ${classType.name} cannot be annotated with @ConfigDir.", ProblemHighlightType.GENERIC_ERROR, QuickFixFactory.getInstance().createDeleteFix(configDir, "Remove @ConfigDir"), ) @@ -267,7 +269,7 @@ val ref = classType.reference holder.registerProblem( ref, - "Injected ConfigurationLoader must have a generic parameter.", + "Injected ${classType.name} must have a generic parameter.", ProblemHighlightType.GENERIC_ERROR, MissingConfLoaderTypeParamFix(ref), ) @@ -275,14 +277,17 @@ classType.parameters.firstOrNull()?.let { param -> val paramType = param as? PsiClassReferenceType ?: return@let val paramTypeFQName = paramType.fullQualifiedName ?: return@let - if (paramTypeFQName != "ninja.leaping.configurate.commented.CommentedConfigurationNode") { + if ( + paramTypeFQName != "ninja.leaping.configurate.commented.CommentedConfigurationNode" && + paramTypeFQName != "org.spongepowered.configurate.CommentedConfigurationNode" + ) { val ref = param.reference holder.registerProblem( ref, "Injected ConfigurationLoader generic parameter must be " + "CommentedConfigurationNode.", ProblemHighlightType.GENERIC_ERROR, - WrongConfLoaderTypeParamFix(ref), + WrongConfLoaderTypeParamFix(classType.className, ref), ) } } @@ -371,7 +376,8 @@ } } - class WrongConfLoaderTypeParamFix(ref: PsiJavaCodeReferenceElement) : LocalQuickFixOnPsiElement(ref) { + class WrongConfLoaderTypeParamFix(private val clazzName: String, param: PsiJavaCodeReferenceElement) : + LocalQuickFixOnPsiElement(param) { override fun getFamilyName(): String = name @@ -379,7 +385,11 @@ override fun invoke(project: Project, file: PsiFile, startElement: PsiElement, endElement: PsiElement) { val newRef = JavaPsiFacade.getElementFactory(project).createReferenceFromText( - "ninja.leaping.configurate.commented.CommentedConfigurationNode", + when (clazzName) { + "ninja.leaping.configurate.loader.ConfigurationLoader" -> + "ninja.leaping.configurate.commented.CommentedConfigurationNode" + else -> { "org.spongepowered.configurate.CommentedConfigurationNode" } + }, startElement, ) startElement.replace(newRef) @@ -393,11 +403,23 @@ override fun getText(): String = "Insert generic parameter" override fun invoke(project: Project, file: PsiFile, startElement: PsiElement, endElement: PsiElement) { - val newRef = JavaPsiFacade.getElementFactory(project).createReferenceFromText( + val newRef: PsiElement = if ( + JavaPsiFacade.getInstance(project) + .findPackage("ninja.leaping.configurate") != null + ) { + JavaPsiFacade.getElementFactory(project).createReferenceFromText( - "ninja.leaping.configurate.loader.ConfigurationLoader" + - "", + "ninja.leaping.configurate.loader.ConfigurationLoader" + + "", - startElement, + startElement - ) + ) + } else { + JavaPsiFacade.getElementFactory(project).createReferenceFromText( + "org.spongepowered.configurate.loader.ConfigurationLoader" + + "", + startElement + ) + } + startElement.replace(newRef) } }