User: joe Date: 21 Sep 23 15:18 Revision: c6097666812cd0ccffaad06843b1d1b1cd493ac0 Summary: Remove support for MCP translations, and remove prefix and suffix support TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=8734&personal=false Index: src/main/kotlin/translations/TranslationConstants.kt =================================================================== --- src/main/kotlin/translations/TranslationConstants.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/TranslationConstants.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -22,21 +22,13 @@ object TranslationConstants { const val DEFAULT_LOCALE = "en_us" - const val I18N_CLIENT_CLASS = "net.minecraft.client.resources.I18n" - const val I18N_CLIENT_LANG_CLASS = "net.minecraft.client.resources.language.I18n" + const val I18N_CLASS = "net.minecraft.client.resources.language.I18n" const val TRANSLATABLE_COMPONENT = "net.minecraft.network.chat.TranslatableComponent" const val KEY_MAPPING = "net.minecraft.client.KeyMapping" const val INPUT_CONSTANTS_KEY = "com.mojang.blaze3d.platform.InputConstants" const val TEXT_COMPONENT_HELPER = "net.minecraftforge.server.command.TextComponentHelper" - const val I18N_COMMON_CLASS = "net.minecraft.util.text.translation.I18n" const val CONSTRUCTOR = "" - const val TRANSLATION_COMPONENT_CLASS = "net.minecraft.util.text.TextComponentTranslation" const val COMMAND_EXCEPTION_CLASS = "net.minecraft.command.CommandException" - const val FORMAT = "func_135052_a" - const val TRANSLATE_TO_LOCAL = "func_74838_a" - const val TRANSLATE_TO_LOCAL_FORMATTED = "func_74837_a" - const val SET_BLOCK_NAME = "func_149663_c" - const val SET_ITEM_NAME = "func_77655_b" const val GET = "m_118938_" const val EXISTS = "m_118936_" const val INPUT_CONSTANTS_KEY_GET_KEY = "m_84851_" Index: src/main/kotlin/translations/identification/LiteralTranslationIdentifier.kt =================================================================== --- src/main/kotlin/translations/identification/LiteralTranslationIdentifier.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/identification/LiteralTranslationIdentifier.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -29,12 +29,10 @@ if (element.value is String) { val result = identify(element.project, element, statement, element) return result?.copy( - key = result.key.copy( - infix = result.key.infix.replace( + key = result.key.replace( - CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED, - "", - ), + CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED, + "", + ), - ), ) } return null Index: src/main/kotlin/translations/identification/ReferenceTranslationIdentifier.kt =================================================================== --- src/main/kotlin/translations/identification/ReferenceTranslationIdentifier.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/identification/ReferenceTranslationIdentifier.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -47,12 +47,10 @@ val result = identify(element.project, element, statement, referenceElement) return result?.copy( - key = result.key.copy( - infix = result.key.infix.replace( + key = result.key.replace( - CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED, - "", - ), + CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED, + "", + ), - ), ) } } Index: src/main/kotlin/translations/identification/TranslationFunction.kt =================================================================== --- src/main/kotlin/translations/identification/TranslationFunction.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/identification/TranslationFunction.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -36,10 +36,7 @@ private val memberReference: MemberReference, val matchedIndex: Int, val formatting: Boolean, - val setter: Boolean = false, val foldParameters: FoldingScope = FoldingScope.CALL, - val prefix: String = "", - val suffix: String = "", val obfuscatedName: Boolean = false, ) { private fun getMethod(context: PsiElement): PsiMethod? { @@ -55,17 +52,19 @@ } fun matches(call: PsiCall, paramIndex: Int): Boolean { - val referenceMethod = getMethod(call) ?: return false - val method = call.resolveMethod() ?: return false + return matches(call.resolveMethod() ?: return false, paramIndex) + } + + fun matches(method: PsiMethod, paramIndex: Int): Boolean { + val referenceMethod = getMethod(method) ?: return false return method.isSameReference(referenceMethod) && paramIndex == matchedIndex } - fun getTranslationKey(call: PsiCall, param: PsiElement): TranslationInstance.Key? { + fun getTranslationKey(call: PsiCall, param: PsiElement): String? { if (!matches(call, matchedIndex)) { return null } - val value = ((param as? PsiLiteral)?.value as? String) ?: return null - return TranslationInstance.Key(prefix, value, suffix) + return (param as? PsiLiteral)?.value as? String } fun format(translation: String, call: PsiCall): Pair? { Index: src/main/kotlin/translations/identification/TranslationIdentifier.kt =================================================================== --- src/main/kotlin/translations/identification/TranslationIdentifier.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/identification/TranslationIdentifier.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -57,7 +57,7 @@ if (function.matches(call, index)) { val translationKey = function.getTranslationKey(call, referenceElement) ?: continue val entries = TranslationIndex.getAllDefaultEntries(project).merge("") - val translation = entries[translationKey.full]?.text + val translation = entries[translationKey]?.text if (translation != null) { val foldingElement = when (function.foldParameters) { TranslationFunction.FoldingScope.CALL -> call Index: src/main/kotlin/translations/identification/TranslationInstance.kt =================================================================== --- src/main/kotlin/translations/identification/TranslationInstance.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/identification/TranslationInstance.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -20,7 +20,6 @@ package com.demonwav.mcdev.translations.identification -import com.demonwav.mcdev.platform.mcp.util.McpConstants import com.demonwav.mcdev.translations.TranslationConstants import com.demonwav.mcdev.util.MemberReference import com.intellij.psi.PsiElement @@ -29,15 +28,11 @@ val foldingElement: PsiElement?, val foldStart: Int, val referenceElement: PsiElement?, - val key: Key, + val key: String, val text: String?, val formattingError: FormattingError? = null, val superfluousVarargStart: Int = -1, ) { - data class Key(val prefix: String, val infix: String, val suffix: String) { - val full = (prefix + infix + suffix).trim() - } - companion object { enum class FormattingError { MISSING, SUPERFLUOUS @@ -46,19 +41,9 @@ val translationFunctions = listOf( TranslationFunction( MemberReference( - TranslationConstants.FORMAT, - "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;", - TranslationConstants.I18N_CLIENT_CLASS, - ), - 0, - formatting = true, - obfuscatedName = true, - ), - TranslationFunction( - MemberReference( TranslationConstants.GET, "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;", - TranslationConstants.I18N_CLIENT_LANG_CLASS, + TranslationConstants.I18N_CLASS, ), 0, formatting = true, @@ -68,46 +53,16 @@ MemberReference( TranslationConstants.EXISTS, "(Ljava/lang/String;)Z", - TranslationConstants.I18N_CLIENT_LANG_CLASS, + TranslationConstants.I18N_CLASS, ), 0, formatting = false, - obfuscatedName = true, foldParameters = TranslationFunction.FoldingScope.PARAMETERS, - ), - TranslationFunction( - MemberReference( - TranslationConstants.TRANSLATE_TO_LOCAL, - "(Ljava/lang/String;)Ljava/lang/String;", - TranslationConstants.I18N_COMMON_CLASS, - ), - 0, - formatting = false, obfuscatedName = true, ), TranslationFunction( MemberReference( - TranslationConstants.TRANSLATE_TO_LOCAL_FORMATTED, - "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;", - TranslationConstants.I18N_COMMON_CLASS, - ), - 0, - formatting = true, - obfuscatedName = true, - ), - TranslationFunction( - MemberReference( TranslationConstants.CONSTRUCTOR, - "(Ljava/lang/String;[Ljava/lang/Object;)V", - TranslationConstants.TRANSLATION_COMPONENT_CLASS, - ), - 0, - formatting = true, - foldParameters = TranslationFunction.FoldingScope.PARAMETERS, - ), - TranslationFunction( - MemberReference( - TranslationConstants.CONSTRUCTOR, "(Ljava/lang/String;)V", TranslationConstants.TRANSLATABLE_COMPONENT, ), @@ -146,34 +101,6 @@ ), TranslationFunction( MemberReference( - TranslationConstants.SET_BLOCK_NAME, - "(Ljava/lang/String;)Lnet/minecraft/block/Block;", - McpConstants.BLOCK, - ), - 0, - formatting = false, - setter = true, - foldParameters = TranslationFunction.FoldingScope.PARAMETERS, - prefix = "tile.", - suffix = ".name", - obfuscatedName = true, - ), - TranslationFunction( - MemberReference( - TranslationConstants.SET_ITEM_NAME, - "(Ljava/lang/String;)Lnet/minecraft/item/Item;", - McpConstants.ITEM, - ), - 0, - formatting = false, - setter = true, - foldParameters = TranslationFunction.FoldingScope.PARAMETERS, - prefix = "item.", - suffix = ".name", - obfuscatedName = true, - ), - TranslationFunction( - MemberReference( TranslationConstants.CONSTRUCTOR, "(Ljava/lang/String;ILjava/lang/String;)V", TranslationConstants.KEY_MAPPING, Index: src/main/kotlin/translations/inspections/ChangeTranslationQuickFix.kt =================================================================== --- src/main/kotlin/translations/inspections/ChangeTranslationQuickFix.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/inspections/ChangeTranslationQuickFix.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -43,7 +43,7 @@ val key = LiteralTranslationIdentifier().identify(literal)?.key ?: return val popup = ChooseByNamePopup.createPopup( project, - TranslationGotoModel(project, key.prefix, key.suffix), + TranslationGotoModel(project), null, ) popup.invoke( @@ -51,13 +51,9 @@ override fun elementChosen(element: Any) { val selectedKey = (element as PsiNamedElement).name ?: return literal.containingFile.runWriteAction { - val insertion = selectedKey.substring( - key.prefix.length, - selectedKey.length - key.suffix.length, - ) literal.replace( JavaPsiFacade.getInstance(project).elementFactory.createExpressionFromText( - "\"$insertion\"", + "\"$selectedKey\"", literal.context, ), ) Index: src/main/kotlin/translations/inspections/NoTranslationInspection.kt =================================================================== --- src/main/kotlin/translations/inspections/NoTranslationInspection.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/inspections/NoTranslationInspection.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -63,9 +63,7 @@ override fun applyFix(project: Project, descriptor: ProblemDescriptor) { try { val literal = descriptor.psiElement as PsiLiteralExpression - val translation = LiteralTranslationIdentifier().identify(literal) - val literalValue = literal.value as String - val key = translation?.key?.copy(infix = literalValue)?.full ?: literalValue + val key = literal.value as String val result = Messages.showInputDialog( "Enter default value for \"$key\":", "Create Translation", Index: src/main/kotlin/translations/reference/TranslationGotoModel.kt =================================================================== --- src/main/kotlin/translations/reference/TranslationGotoModel.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/reference/TranslationGotoModel.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -32,7 +32,7 @@ import com.intellij.util.indexing.FindSymbolParameters import java.util.TreeSet -class TranslationGotoModel(project: Project, private val prefix: String, private val suffix: String) : +class TranslationGotoModel(project: Project) : ContributorsBasedGotoByModel( project, arrayOf( @@ -54,12 +54,7 @@ val result = TreeSet { o1, o2 -> (o1 as PsiNamedElement).name?.compareTo((o2 as PsiNamedElement).name ?: return@TreeSet -1) ?: -1 } - result.addAll( - superResult.map { it as PsiNamedElement }.filter { - val key = it.name ?: return@filter false - key.startsWith(prefix) && key.endsWith(suffix) - }, - ) + result.addAll(superResult.map { it as PsiNamedElement },) return result.toArray() } Index: src/main/kotlin/translations/reference/TranslationReference.kt =================================================================== --- src/main/kotlin/translations/reference/TranslationReference.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/reference/TranslationReference.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -23,7 +23,6 @@ import com.demonwav.mcdev.asset.PlatformAssets import com.demonwav.mcdev.translations.TranslationConstants import com.demonwav.mcdev.translations.TranslationFiles -import com.demonwav.mcdev.translations.identification.TranslationInstance import com.demonwav.mcdev.translations.index.TranslationIndex import com.demonwav.mcdev.translations.index.TranslationInverseIndex import com.demonwav.mcdev.translations.lang.gen.psi.LangEntry @@ -44,7 +43,7 @@ class TranslationReference( element: PsiElement, textRange: TextRange, - val key: TranslationInstance.Key, + val key: String, private val renameHandler: (element: PsiElement, range: TextRange, newName: String) -> PsiElement = { elem, range, newName -> ElementManipulators.getManipulator(elem).handleContentChange(elem, range, newName)!! @@ -53,7 +52,7 @@ override fun multiResolve(incompleteCode: Boolean): Array { val project = myElement.project val entries = TranslationInverseIndex.findElements( - key.full, + key, GlobalSearchScope.allScope(project), TranslationConstants.DEFAULT_LOCALE, ) @@ -63,13 +62,11 @@ override fun getVariants(): Array { val project = myElement.project val defaultTranslations = TranslationIndex.getAllDefaultTranslations(project) - val pattern = Regex("${Regex.escape(key.prefix)}(.*?)${Regex.escape(key.suffix)}") return defaultTranslations .filter { it.key.isNotEmpty() } - .mapNotNull { entry -> pattern.matchEntire(entry.key)?.let { entry to it } } - .map { (entry, match) -> + .map { entry -> LookupElementBuilder - .create(if (match.groups.size <= 1) entry.key else match.groupValues[1]) + .create(entry.key) .withIcon(PlatformAssets.MINECRAFT_ICON) .withTypeText(TranslationConstants.DEFAULT_LOCALE) .withPresentableText(entry.key) @@ -87,7 +84,7 @@ return false } - return (element is LangEntry && element.key == key.full) || - (element is JsonProperty && element.name == key.full) + return (element is LangEntry && element.key == key) || + (element is JsonProperty && element.name == key) } } Index: src/main/kotlin/translations/reference/TranslationReferenceSearch.kt =================================================================== --- src/main/kotlin/translations/reference/TranslationReferenceSearch.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/reference/TranslationReferenceSearch.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -73,7 +73,7 @@ val highlighted = it.file?.findElementAt(it.rangeInElement!!.startOffset) val ref = highlighted?.parent?.references ?.find { ref -> ref is TranslationReference } as TranslationReference? - if (ref?.key?.full == key) { + if (ref?.key == key) { consumer.process(ref) } } Index: src/main/kotlin/translations/reference/contributors.kt =================================================================== --- src/main/kotlin/translations/reference/contributors.kt (revision b95677e9c3c995625252c539f6428e294c716bcf) +++ src/main/kotlin/translations/reference/contributors.kt (revision c6097666812cd0ccffaad06843b1d1b1cd493ac0) @@ -22,7 +22,6 @@ import com.demonwav.mcdev.translations.TranslationFiles import com.demonwav.mcdev.translations.identification.TranslationIdentifier -import com.demonwav.mcdev.translations.identification.TranslationInstance import com.demonwav.mcdev.translations.lang.gen.psi.LangEntry import com.demonwav.mcdev.translations.lang.gen.psi.LangTypes import com.intellij.json.JsonElementTypes @@ -86,7 +85,7 @@ TranslationReference( element, nameTextRange.shiftRight(1).grown(-2), - TranslationInstance.Key("", entry.name, ""), + entry.name, ) { elem, _, newName -> (elem as JsonProperty).setName(newName) }, @@ -111,7 +110,7 @@ TranslationReference( element, TextRange(0, entry.key.length), - TranslationInstance.Key("", entry.key, ""), + entry.key, ), ) }