@@ -22,12 +22,15 @@ package com.demonwav.mcdev.platform.fabric.inspection
22
22
23
23
import com.demonwav.mcdev.util.constantStringValue
24
24
import com.intellij.codeInspection.LocalInspectionTool
25
+ import com.intellij.codeInspection.LocalQuickFix
26
+ import com.intellij.codeInspection.ProblemDescriptor
25
27
import com.intellij.codeInspection.ProblemsHolder
26
28
import com.intellij.json.psi.JsonFile
27
29
import com.intellij.json.psi.JsonObject
28
30
import com.intellij.json.psi.JsonStringLiteral
29
31
import com.intellij.openapi.project.Project
30
32
import com.intellij.psi.JavaElementVisitor
33
+ import com.intellij.psi.JavaPsiFacade
31
34
import com.intellij.psi.PsiElementVisitor
32
35
import com.intellij.psi.PsiField
33
36
import com.intellij.psi.PsiManager
@@ -36,7 +39,7 @@ import com.intellij.psi.search.GlobalSearchScope
36
39
37
40
class ModIdMismatchInspection : LocalInspectionTool () {
38
41
39
- override fun getStaticDescription () = " Checks for a mismatch between the mod id in fabric.mod.json and the java code."
42
+ override fun getStaticDescription () = " Checks for a mismatch between the mod ID in fabric.mod.json and the java code."
40
43
41
44
override fun buildVisitor (holder : ProblemsHolder , isOnTheFly : Boolean ): PsiElementVisitor = Visitor (holder)
42
45
@@ -51,11 +54,13 @@ class ModIdMismatchInspection : LocalInspectionTool() {
51
54
52
55
val project = field.project
53
56
val jsonModId = getModIdFromJson(project, field.manager) ? : return
57
+ if (' $' in jsonModId) return
54
58
55
59
if (javaModId != jsonModId) {
56
60
holder.registerProblem(
57
61
initializer,
58
- " Mod ID '$javaModId ' does not match mod id '$jsonModId ' from fabric.mod.json"
62
+ " Mod ID '$javaModId ' does not match mod ID '$jsonModId ' from fabric.mod.json" ,
63
+ ChangeFieldInitializerQuickFix (jsonModId)
59
64
)
60
65
}
61
66
}
@@ -75,4 +80,20 @@ class ModIdMismatchInspection : LocalInspectionTool() {
75
80
return stringLiteral.value
76
81
}
77
82
}
83
+
84
+ private class ChangeFieldInitializerQuickFix (
85
+ private val newValue : String
86
+ ) : LocalQuickFix {
87
+
88
+ override fun getName () = " Change mod ID field to \" $newValue \" "
89
+
90
+ override fun getFamilyName () = " Change mod ID field"
91
+
92
+ override fun applyFix (project : Project , descriptor : ProblemDescriptor ) {
93
+ val initializer = descriptor.psiElement ? : return
94
+ val factory = JavaPsiFacade .getElementFactory(project)
95
+ val newInitializer = factory.createExpressionFromText(" \" $newValue \" " , null )
96
+ initializer.replace(newInitializer)
97
+ }
98
+ }
78
99
}
0 commit comments