Skip to content

Commit 84af973

Browse files
committed
Use new Minecraft versioning scheme to recognize unobfuscated Minecraft
1 parent 5cc5385 commit 84af973

File tree

8 files changed

+20
-15
lines changed

8 files changed

+20
-15
lines changed

src/main/kotlin/platform/mixin/expression/MEExpressionCompletionUtil.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,7 @@ object MEExpressionCompletionUtil {
992992
val locals = localsHere.filter { it.index == index }
993993

994994
val elementFactory = JavaPsiFacade.getElementFactory(project)
995-
val hasNamedLocalVariables = mixinClass.findModule()?.hasNamedLocalVariables(targetClass.name.replace('/', '.')) != false
995+
val hasNamedLocalVariables = mixinClass.hasNamedLocalVariables(targetClass.name.replace('/', '.'))
996996

997997
return locals.map { localVariable ->
998998
val localPsiType = if (localVariable.signature != null) {

src/main/kotlin/platform/mixin/inspection/injector/ModifyVariableMayUseNameInspection.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class ModifyVariableMayUseNameInspection : MixinInspection() {
119119

120120
var variableName: String? = null
121121
for (targetClass in mixinTargets) {
122-
if (!module.hasNamedLocalVariables(targetClass.name.replace('/', '.'))) {
122+
if (!injectorAnnotation.hasNamedLocalVariables(targetClass.name.replace('/', '.'))) {
123123
return null
124124
}
125125

src/main/kotlin/platform/mixin/inspection/mixinextras/InjectLocalCaptureReplaceWithLocalInspection.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class InjectLocalCaptureReplaceWithLocalInspection : MixinInspection() {
119119

120120
val hasNamedLocalVariables = MixinAnnotationHandler.resolveTarget(annotation).all {
121121
it is MethodTargetMember &&
122-
annotation.findModule()?.hasNamedLocalVariables(it.classAndMethod.clazz.name.replace('/', '.')) != false
122+
annotation.hasNamedLocalVariables(it.classAndMethod.clazz.name.replace('/', '.'))
123123
}
124124

125125
// based on the resolved local variables, figure out what @Local specifiers to use

src/main/kotlin/platform/mixin/util/MinecraftMissingLVTChecker.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,20 @@
2020

2121
package com.demonwav.mcdev.platform.mixin.util
2222

23-
import com.intellij.openapi.module.Module
23+
import com.demonwav.mcdev.util.MinecraftVersions
24+
import com.demonwav.mcdev.util.mcVersion
2425
import com.intellij.openapi.util.registry.Registry
26+
import com.intellij.psi.PsiElement
2527

2628
class MinecraftMissingLVTChecker : MissingLVTChecker {
27-
override fun hasMissingLVT(module: Module, className: String): Boolean {
28-
return if (className.startsWith("net.minecraft.") || className.startsWith("com.mojang.blaze3d.")) {
29-
// TODO: we'll be able to handle this better when we know which Minecraft version will be unobfuscated
30-
!Registry.`is`("mcdev.unobfuscated.minecraft")
31-
} else {
32-
false
29+
override fun hasMissingLVT(context: PsiElement, className: String): Boolean {
30+
return when {
31+
Registry.`is`("mcdev.unobfuscated.minecraft") -> false
32+
!className.startsWith("net.minecraft.") && !className.startsWith("com.mojang.blaze3d.") -> false
33+
else -> {
34+
val mcVersion = context.mcVersion
35+
mcVersion != null && mcVersion <= MinecraftVersions.MC25_4
36+
}
3337
}
3438
}
3539
}

src/main/kotlin/platform/mixin/util/MissingLVTChecker.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
package com.demonwav.mcdev.platform.mixin.util
2222

2323
import com.intellij.openapi.extensions.ExtensionPointName
24-
import com.intellij.openapi.module.Module
24+
import com.intellij.psi.PsiElement
2525

2626
interface MissingLVTChecker {
2727
companion object {
2828
val EP_NAME = ExtensionPointName.create<MissingLVTChecker>("com.demonwav.minecraft-dev.missingLVTChecker")
2929
}
3030

31-
fun hasMissingLVT(module: Module, className: String): Boolean
31+
fun hasMissingLVT(context: PsiElement, className: String): Boolean
3232
}

src/main/kotlin/platform/mixin/util/Mixin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ val Module.mixinVersion: SemanticVersion?
300300
return SemanticVersion.tryParse(version)
301301
}
302302

303-
fun Module.hasNamedLocalVariables(className: String): Boolean {
303+
fun PsiElement.hasNamedLocalVariables(className: String): Boolean {
304304
for (checker in MissingLVTChecker.EP_NAME.extensionList) {
305305
if (checker.hasMissingLVT(this, className)) {
306306
return false

src/main/kotlin/util/MinecraftVersions.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ object MinecraftVersions {
4646
val MC1_20_6 = SemanticVersion.release(1, 20, 6)
4747
val MC1_21 = SemanticVersion.release(1, 21)
4848
val MC1_21_1 = SemanticVersion.release(1, 21, 1)
49+
val MC25_4 = SemanticVersion.release(25, 4) // placeholder till we know what the last 2025 winter drop version is
4950

5051
fun requiredJavaVersion(minecraftVersion: SemanticVersion) = when {
5152
minecraftVersion <= MC1_16_5 -> JavaSdkVersion.JDK_1_8

src/test/kotlin/platform/mixin/expression/MEExpressionCompletionTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import com.demonwav.mcdev.platform.mixin.util.MissingLVTChecker
2727
import com.demonwav.mcdev.util.BeforeOrAfter
2828
import com.demonwav.mcdev.util.invokeDeclaredMethod
2929
import com.intellij.codeInsight.lookup.Lookup
30-
import com.intellij.openapi.module.Module
3130
import com.intellij.openapi.util.text.StringUtil
31+
import com.intellij.psi.PsiElement
3232
import com.intellij.psi.PsiFile
3333
import com.intellij.testFramework.ExtensionTestUtil
3434
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl
@@ -806,6 +806,6 @@ class MEExpressionCompletionTest : BaseMixinTest() {
806806
}
807807

808808
private object AlwaysMissingLVTChecker : MissingLVTChecker {
809-
override fun hasMissingLVT(module: Module, className: String) = true
809+
override fun hasMissingLVT(context: PsiElement, className: String) = true
810810
}
811811
}

0 commit comments

Comments
 (0)