User: kyle wood Date: 27 Mar 25 03:06 Revision: 5059d2cf88d1781765278e7dd075a1a6ffdd7190 Summary: Merge branch '2024.1' into 2024.2 TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9864&personal=false Index: buildSrc/src/main/kotlin/mcdev-core.gradle.kts =================================================================== --- buildSrc/src/main/kotlin/mcdev-core.gradle.kts (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ buildSrc/src/main/kotlin/mcdev-core.gradle.kts (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: gradle.properties =================================================================== --- gradle.properties (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ gradle.properties (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ # # https://mcdev.io/ # -# Copyright (C) 2024 minecraft-dev +# Copyright (C) 2025 minecraft-dev # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published Index: gradle/libs.versions.toml =================================================================== --- gradle/libs.versions.toml (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ gradle/libs.versions.toml (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -7,7 +7,7 @@ fuel = "2.3.1" licenser = "0.6.1" changelog = "2.2.0" -intellij-plugin = "2.1.0" +intellij-plugin = "2.4.0" intellij-ide = "2024.2" idea-ext = "1.1.8" psiPlugin = "242.4697" @@ -31,7 +31,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" +mixinExtras-expressions = "io.github.llamalad7:mixinextras-expressions:0.0.4" # GrammarKit jflex-lib = "org.jetbrains.idea:jflex:1.7.0-b7f882a" Index: settings.gradle.kts =================================================================== --- settings.gradle.kts (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ settings.gradle.kts (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/PlatformVersion.kt =================================================================== --- src/main/kotlin/creator/PlatformVersion.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/PlatformVersion.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/custom/BuiltinValidations.kt =================================================================== --- src/main/kotlin/creator/custom/BuiltinValidations.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/custom/BuiltinValidations.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/custom/CreatorContext.kt =================================================================== --- src/main/kotlin/creator/custom/CreatorContext.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/custom/CreatorContext.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/custom/CreatorTemplateProcessor.kt =================================================================== --- src/main/kotlin/creator/custom/CreatorTemplateProcessor.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/custom/CreatorTemplateProcessor.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/custom/TemplateService.kt =================================================================== --- src/main/kotlin/creator/custom/TemplateService.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/custom/TemplateService.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/field-validation.kt =================================================================== --- src/main/kotlin/creator/field-validation.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/field-validation.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/creator/step/OptionalSteps.kt =================================================================== --- src/main/kotlin/creator/step/OptionalSteps.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/creator/step/OptionalSteps.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/insight/generation/EventGenHelper.kt =================================================================== --- src/main/kotlin/insight/generation/EventGenHelper.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/insight/generation/EventGenHelper.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/nbt/lang/format/NbttLanguageCodeStyleSettingsProvider.kt =================================================================== --- src/main/kotlin/nbt/lang/format/NbttLanguageCodeStyleSettingsProvider.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/nbt/lang/format/NbttLanguageCodeStyleSettingsProvider.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/platform/bukkit/inspection/BukkitListenerImplementedInspection.kt =================================================================== --- src/main/kotlin/platform/bukkit/inspection/BukkitListenerImplementedInspection.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/bukkit/inspection/BukkitListenerImplementedInspection.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/platform/bungeecord/inspection/BungeeCordListenerImplementedInspection.kt =================================================================== --- src/main/kotlin/platform/bungeecord/inspection/BungeeCordListenerImplementedInspection.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/bungeecord/inspection/BungeeCordListenerImplementedInspection.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/platform/mcp/actions/SrgActionBase.kt =================================================================== --- src/main/kotlin/platform/mcp/actions/SrgActionBase.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mcp/actions/SrgActionBase.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/platform/mcp/inspections/StackEmptyInspection.kt =================================================================== --- src/main/kotlin/platform/mcp/inspections/StackEmptyInspection.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mcp/inspections/StackEmptyInspection.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/platform/mixin/expression/MEExpressionCompletionUtil.kt =================================================================== --- src/main/kotlin/platform/mixin/expression/MEExpressionCompletionUtil.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mixin/expression/MEExpressionCompletionUtil.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published @@ -246,22 +246,27 @@ val modifierList = expressionAnnotation.findContainingModifierList() ?: return emptyList() - val (handler, handlerAnnotation) = modifierList.annotations.mapFirstNotNull { annotation -> - val qName = annotation.qualifiedName ?: return@mapFirstNotNull null - val handler = MixinAnnotationHandler.forMixinAnnotation(qName, project) ?: return@mapFirstNotNull null - handler to annotation + val handlerAnnotation = modifierList.annotations.firstOrNull { + MixinAnnotationHandler.forMixinAnnotation(it, project) != null } ?: return emptyList() - return handler.resolveTarget(handlerAnnotation).flatMap { - (it as? MethodTargetMember)?.classAndMethod?.method?.instructions?.mapNotNull { insn -> + return MixinAnnotationHandler.resolveTarget(handlerAnnotation).flatMap { member -> + (member as? MethodTargetMember)?.classAndMethod + ?.let { (clazz, method) -> MEExpressionMatchUtil.getFlowMap(project, clazz, method) } + ?.values + ?.asSequence() + ?.filterNot { it.isComplex } + ?.map { it.insn } + ?.mapNotNull { insn -> - if (insn is LdcInsnNode && insn.cst is String) { - LookupElementBuilder.create(insn.cst) - } else { - null - } + if (insn is LdcInsnNode && insn.cst is String) { + LookupElementBuilder.create(insn.cst) + } else { + null + } - } ?: emptyList() - } + } + .orEmpty() - } + } + } fun getCompletionVariantsFromBytecode(project: Project, contextElement: PsiElement): List { val statement = contextElement.parentOfType() ?: return emptyList() @@ -278,8 +283,7 @@ val mixinClass = modifierList.findContainingClass() ?: return emptyList() val (handler, handlerAnnotation) = modifierList.annotations.mapFirstNotNull { annotation -> - val qName = annotation.qualifiedName ?: return@mapFirstNotNull null - val handler = MixinAnnotationHandler.forMixinAnnotation(qName, project) ?: return@mapFirstNotNull null + val handler = MixinAnnotationHandler.forMixinAnnotation(annotation, project) ?: return@mapFirstNotNull null handler to annotation } ?: return emptyList() Index: src/main/kotlin/platform/mixin/handlers/AccessorHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/AccessorHandler.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mixin/handlers/AccessorHandler.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published @@ -20,6 +20,7 @@ package com.demonwav.mcdev.platform.mixin.handlers +import com.demonwav.mcdev.asset.MixinAssets import com.demonwav.mcdev.platform.mixin.util.FieldTargetMember import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.ACCESSOR import com.demonwav.mcdev.platform.mixin.util.MixinTargetMember @@ -97,7 +98,8 @@ fun findAccessorTargetForReference(method: PsiMethod): SmartPsiElementPointer? { val accessor = method.findAnnotation(ACCESSOR) ?: return null - val targetMember = resolveTarget(accessor).firstOrNull() as? FieldTargetMember ?: return null + val targetMember = MixinAnnotationHandler.resolveTarget(accessor).firstOrNull() as? FieldTargetMember + ?: return null return targetMember.classAndField.field.findOrConstructSourceField( targetMember.classAndField.clazz, method.project, @@ -108,6 +110,8 @@ override val isEntryPoint = false + override val icon = MixinAssets.MIXIN_ACCESSOR_ICON + data class AccessorInfo(val name: String, val type: AccessorType) enum class AccessorType(val allowGetters: Boolean, val allowSetters: Boolean) { Index: src/main/kotlin/platform/mixin/handlers/InvokerHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/InvokerHandler.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mixin/handlers/InvokerHandler.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published @@ -20,6 +20,7 @@ package com.demonwav.mcdev.platform.mixin.handlers +import com.demonwav.mcdev.asset.MixinAssets import com.demonwav.mcdev.platform.mixin.util.MethodTargetMember import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.INVOKER import com.demonwav.mcdev.platform.mixin.util.MixinTargetMember @@ -98,7 +99,8 @@ fun findInvokerTargetForReference(member: PsiMember): SmartPsiElementPointer? { val accessor = member.findAnnotation(INVOKER) ?: return null - val invokerTarget = resolveTarget(accessor).firstOrNull() as? MethodTargetMember ?: return null + val invokerTarget = MixinAnnotationHandler.resolveTarget(accessor).firstOrNull() as? MethodTargetMember + ?: return null return invokerTarget.classAndMethod.method.findOrConstructSourceMethod( invokerTarget.classAndMethod.clazz, member.project, @@ -108,4 +110,6 @@ } override val isEntryPoint = false + + override val icon = MixinAssets.MIXIN_ACCESSOR_ICON } Index: src/main/kotlin/platform/mixin/handlers/ShadowHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/ShadowHandler.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mixin/handlers/ShadowHandler.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published @@ -20,6 +20,7 @@ package com.demonwav.mcdev.platform.mixin.handlers +import com.demonwav.mcdev.asset.MixinAssets import com.demonwav.mcdev.platform.mixin.handlers.injectionPoint.InsnResolutionInfo import com.demonwav.mcdev.platform.mixin.util.FieldTargetMember import com.demonwav.mcdev.platform.mixin.util.MethodTargetMember @@ -79,14 +80,14 @@ fun findFirstShadowTargetForNavigation(member: PsiMember): SmartPsiElementPointer? { val shadow = member.findAnnotation(SHADOW) ?: return null - val shadowTarget = resolveTarget(shadow).firstOrNull() ?: return null + val shadowTarget = MixinAnnotationHandler.resolveTarget(shadow).firstOrNull() ?: return null return shadowTarget.findSourceElement(member.project, member.resolveScope, canDecompile = false) ?.createSmartPointer() } fun findFirstShadowTargetForReference(member: PsiMember): SmartPsiElementPointer? { val shadow = member.findAnnotation(SHADOW) ?: return null - val shadowTarget = resolveTarget(shadow).firstOrNull() ?: return null + val shadowTarget = MixinAnnotationHandler.resolveTarget(shadow).firstOrNull() ?: return null return shadowTarget.findOrConstructSourceMember(member.project, member.resolveScope, canDecompile = false) .createSmartPointer() } @@ -102,6 +103,8 @@ override val isEntryPoint = false + override val icon = MixinAssets.MIXIN_SHADOW_ICON + companion object { fun getInstance(): ShadowHandler? { return MixinAnnotationHandler.forMixinAnnotation(SHADOW) as? ShadowHandler Index: src/main/kotlin/platform/mixin/inspection/injector/InjectCouldBeOverwriteInspection.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/injector/InjectCouldBeOverwriteInspection.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mixin/inspection/injector/InjectCouldBeOverwriteInspection.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published @@ -108,9 +108,9 @@ } // check there is only one target - val injectHandler = MixinAnnotationHandler.forMixinAnnotation(MixinConstants.Annotations.INJECT)!! - val targetMethod = (injectHandler.resolveTarget(injectAnnotation).singleOrNull() as? MethodTargetMember) + val targetMethod = + (MixinAnnotationHandler.resolveTarget(injectAnnotation).singleOrNull() as? MethodTargetMember) - ?.classAndMethod ?: return + ?.classAndMethod ?: return // can't overwrite constructors / static initializers if (targetMethod.method.isConstructor || targetMethod.method.isClinit) { Index: src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published @@ -26,7 +26,7 @@ import com.demonwav.mcdev.platform.mixin.reference.MethodReference import com.demonwav.mcdev.platform.mixin.util.MixinConstants import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.COERCE -import com.demonwav.mcdev.platform.mixin.util.findSuperConstructorCall +import com.demonwav.mcdev.platform.mixin.util.findDelegateConstructorCall import com.demonwav.mcdev.platform.mixin.util.hasAccess import com.demonwav.mcdev.platform.mixin.util.isAssignable import com.demonwav.mcdev.platform.mixin.util.isConstructor @@ -95,8 +95,7 @@ var reportedSignature = false for (annotation in modifiers.annotations) { - val qName = annotation.qualifiedName ?: continue - val handler = MixinAnnotationHandler.forMixinAnnotation(qName, annotation.project) + val handler = MixinAnnotationHandler.forMixinAnnotation(annotation, annotation.project) as? InjectorAnnotationHandler ?: continue val methodAttribute = annotation.findDeclaredAttributeValue("method") ?: continue val targetMethods = MethodReference.resolveAllIfNotAmbiguous(methodAttribute) ?: continue @@ -108,15 +107,15 @@ if (!shouldBeStatic && targetMethod.method.isConstructor) { // before the superclass constructor call, everything must be static val methodInsns = targetMethod.method.instructions - val superCtorCall = targetMethod.method.findSuperConstructorCall() - if (methodInsns != null && superCtorCall != null) { + val delegateCtorCall = targetMethod.method.findDelegateConstructorCall() + if (methodInsns != null && delegateCtorCall != null) { val insns = handler.resolveInstructions( annotation, targetMethod.clazz, targetMethod.method, ) shouldBeStatic = insns.any { - methodInsns.indexOf(it.insn) <= methodInsns.indexOf(superCtorCall) + methodInsns.indexOf(it.insn) <= methodInsns.indexOf(delegateCtorCall) } } } Index: src/main/kotlin/platform/sponge/inspection/SpongeInjectionInspection.kt =================================================================== --- src/main/kotlin/platform/sponge/inspection/SpongeInjectionInspection.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/platform/sponge/inspection/SpongeInjectionInspection.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/translations/identification/TranslationExternalAnnotationsArtifactsResolver.kt =================================================================== --- src/main/kotlin/translations/identification/TranslationExternalAnnotationsArtifactsResolver.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/translations/identification/TranslationExternalAnnotationsArtifactsResolver.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/util/HttpConnectionFactory.kt =================================================================== --- src/main/kotlin/util/HttpConnectionFactory.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/util/HttpConnectionFactory.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/util/Parameter.kt =================================================================== --- src/main/kotlin/util/Parameter.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/util/Parameter.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/util/analysis-utils.kt =================================================================== --- src/main/kotlin/util/analysis-utils.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/util/analysis-utils.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/kotlin/util/utils.kt =================================================================== --- src/main/kotlin/util/utils.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/kotlin/util/utils.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/main/resources/META-INF/mcdev-kotlin.xml =================================================================== --- src/main/resources/META-INF/mcdev-kotlin.xml (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/main/resources/META-INF/mcdev-kotlin.xml (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ https://mcdev.io/ - Copyright (C) 2024 minecraft-dev + Copyright (C) 2025 minecraft-dev This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published Index: src/test/kotlin/framework/EdtInterceptor.kt =================================================================== --- src/test/kotlin/framework/EdtInterceptor.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/test/kotlin/framework/EdtInterceptor.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published Index: src/test/kotlin/framework/ProjectBuilderTest.kt =================================================================== --- src/test/kotlin/framework/ProjectBuilderTest.kt (revision 017a3e92967da678f12d1f2ed4b76f328dee8869) +++ src/test/kotlin/framework/ProjectBuilderTest.kt (revision 5059d2cf88d1781765278e7dd075a1a6ffdd7190) @@ -3,7 +3,7 @@ * * https://mcdev.io/ * - * Copyright (C) 2024 minecraft-dev + * Copyright (C) 2025 minecraft-dev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published