Skip to content

Commit e5ce103

Browse files
committed
Don't show warning if '$' is in the mod ID from fabric.mod.json, add quick fix, uppercase ID in messages
1 parent f45da16 commit e5ce103

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

src/main/kotlin/platform/fabric/inspection/ModIdMismatchInspection.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@ package com.demonwav.mcdev.platform.fabric.inspection
2222

2323
import com.demonwav.mcdev.util.constantStringValue
2424
import com.intellij.codeInspection.LocalInspectionTool
25+
import com.intellij.codeInspection.LocalQuickFix
26+
import com.intellij.codeInspection.ProblemDescriptor
2527
import com.intellij.codeInspection.ProblemsHolder
2628
import com.intellij.json.psi.JsonFile
2729
import com.intellij.json.psi.JsonObject
2830
import com.intellij.json.psi.JsonStringLiteral
2931
import com.intellij.openapi.project.Project
3032
import com.intellij.psi.JavaElementVisitor
33+
import com.intellij.psi.JavaPsiFacade
3134
import com.intellij.psi.PsiElementVisitor
3235
import com.intellij.psi.PsiField
3336
import com.intellij.psi.PsiManager
@@ -36,7 +39,7 @@ import com.intellij.psi.search.GlobalSearchScope
3639

3740
class ModIdMismatchInspection : LocalInspectionTool() {
3841

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."
4043

4144
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor = Visitor(holder)
4245

@@ -51,11 +54,13 @@ class ModIdMismatchInspection : LocalInspectionTool() {
5154

5255
val project = field.project
5356
val jsonModId = getModIdFromJson(project, field.manager) ?: return
57+
if ('$' in jsonModId) return
5458

5559
if (javaModId != jsonModId) {
5660
holder.registerProblem(
5761
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)
5964
)
6065
}
6166
}
@@ -75,4 +80,20 @@ class ModIdMismatchInspection : LocalInspectionTool() {
7580
return stringLiteral.value
7681
}
7782
}
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+
}
7899
}

0 commit comments

Comments
 (0)