User: joe Date: 19 Feb 25 23:09 Revision: e7c276d995bdbf0ba977af6dfe5a9454f834e28e Summary: Add more mixin icons for different types of annotations and accessor mixins Co-authored-by: Voided Aries TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9831&personal=false Index: src/main/kotlin/asset/MixinAssets.kt =================================================================== --- src/main/kotlin/asset/MixinAssets.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/asset/MixinAssets.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -22,14 +22,30 @@ @Suppress("unused") object MixinAssets : Assets() { - val MIXIN_ELEMENT_ICON = loadIcon("/assets/icons/mixin/mixin_element.svg") - val MIXIN_ELEMENT_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_element_dark.svg") + val MIXIN_ACCESSOR_ICON = loadIcon("/assets/icons/mixin/mixin_accessor.svg") + val MIXIN_ACCESSOR_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_accessor_dark.svg") + val MIXIN_ACCESSOR_MIXIN_ICON = loadIcon("/assets/icons/mixin/mixin_accessor_mixin.svg") + val MIXIN_ACCESSOR_MIXIN_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_accessor_mixin_dark.svg") + val MIXIN_CLASS_ICON = loadIcon("/assets/icons/mixin/mixin_class_gutter.svg") val MIXIN_CLASS_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_class_gutter_dark.svg") - val MIXIN_CLASS_TARGET_ICON = loadIcon("/assets/icons/mixin/mixin_class_target_gutter.svg") - val MIXIN_CLASS_TARGET_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_class_target_gutter_dark.svg") + val MIXIN_ELEMENT_ICON = loadIcon("/assets/icons/mixin/mixin_element.svg") + val MIXIN_ELEMENT_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_element_dark.svg") + val MIXIN_INJECTOR_ICON = loadIcon("/assets/icons/mixin/mixin_injector.svg") + val MIXIN_INJECTOR_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_injector_dark.svg") + + val MIXIN_SHADOW_ICON = loadIcon("/assets/icons/mixin/mixin_shadow.svg") + val MIXIN_SHADOW_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_shadow_dark_alt.svg") + + val MIXIN_TARGET_ACCESSOR_MIXIN_ICON = loadIcon("/assets/icons/mixin/mixin_target_accessor_mixin.svg") + val MIXIN_TARGET_ACCESSOR_MIXIN_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_target_accessor_mixin_dark.svg") + + val MIXIN_TARGET_CLASS_ICON = loadIcon("/assets/icons/mixin/mixin_target_class_gutter.svg") + val MIXIN_TARGET_CLASS_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_target_class_gutter_dark.svg") + val MIXIN_MARK = loadIcon("/assets/icons/mixin/mixin_mark.svg") + val ACCESSOR_MARK = loadIcon("/assets/icons/mixin/accessor_mark.svg") } Index: src/main/kotlin/platform/mixin/framework/MixinIconProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/framework/MixinIconProvider.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/framework/MixinIconProvider.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -22,6 +22,7 @@ import com.demonwav.mcdev.MinecraftSettings import com.demonwav.mcdev.asset.MixinAssets +import com.demonwav.mcdev.platform.mixin.util.isAccessorMixin import com.demonwav.mcdev.platform.mixin.util.isMixin import com.intellij.ide.IconLayerProvider import com.intellij.openapi.util.Iconable @@ -29,11 +30,18 @@ import javax.swing.Icon class MixinIconProvider : IconLayerProvider { - override fun getLayerIcon(element: Iconable, isLocked: Boolean): Icon? = - MixinAssets.MIXIN_MARK.takeIf { - MinecraftSettings.instance.mixinClassIcon && element is PsiClass && element.isMixin + override fun getLayerIcon(element: Iconable, isLocked: Boolean): Icon? { + if (!MinecraftSettings.instance.mixinClassIcon || element !is PsiClass || !element.isMixin) { + return null } + return if (element.isAccessorMixin) { + MixinAssets.ACCESSOR_MARK + } else { + MixinAssets.MIXIN_MARK + } + } + override fun getLayerDescription(): String = "Mixin class" } Index: src/main/kotlin/platform/mixin/handlers/AccessorHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/AccessorHandler.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/handlers/AccessorHandler.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -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 @@ -108,6 +109,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/InjectorAnnotationHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/InjectorAnnotationHandler.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/handlers/InjectorAnnotationHandler.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -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.AtResolver import com.demonwav.mcdev.platform.mixin.handlers.injectionPoint.CollectVisitor import com.demonwav.mcdev.platform.mixin.handlers.injectionPoint.InsnResolutionInfo @@ -174,6 +175,8 @@ override val isEntryPoint = true + override val icon = MixinAssets.MIXIN_INJECTOR_ICON + abstract val mixinExtrasExpressionContextType: ExpressionContext.Type data class InsnResult(val method: ClassAndMethodNode, val result: CollectVisitor.Result<*>) Index: src/main/kotlin/platform/mixin/handlers/InvokerHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/InvokerHandler.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/handlers/InvokerHandler.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -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 @@ -108,4 +109,6 @@ } override val isEntryPoint = false + + override val icon = MixinAssets.MIXIN_ACCESSOR_ICON } Index: src/main/kotlin/platform/mixin/handlers/MixinAnnotationHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/MixinAnnotationHandler.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/handlers/MixinAnnotationHandler.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -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.MixinConstants import com.demonwav.mcdev.platform.mixin.util.MixinTargetMember @@ -43,6 +44,7 @@ import com.intellij.serviceContainer.BaseKeyedLazyInstance import com.intellij.util.KeyedLazyInstance import com.intellij.util.xmlb.annotations.Attribute +import javax.swing.Icon import org.objectweb.asm.tree.ClassNode interface MixinAnnotationHandler { @@ -83,6 +85,8 @@ */ val isEntryPoint: Boolean + val icon: Icon get() = MixinAssets.MIXIN_ELEMENT_ICON + companion object { private val EP_NAME = ExtensionPointName>( "com.demonwav.minecraft-dev.mixinAnnotationHandler", Index: src/main/kotlin/platform/mixin/handlers/ShadowHandler.kt =================================================================== --- src/main/kotlin/platform/mixin/handlers/ShadowHandler.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/handlers/ShadowHandler.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -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 @@ -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/insight/MixinElementLineMarkerProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -76,7 +76,7 @@ return LineMarkerInfo( identifier, identifier.textRange, - icon, + handler.icon, { "Go to the $simpleName target" }, MixinGutterIconNavigationHandler(identifier.createSmartPointer(), annotation.createSmartPointer(), handler), GutterIconRenderer.Alignment.LEFT, Index: src/main/kotlin/platform/mixin/insight/MixinLineMarkerProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/MixinLineMarkerProvider.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/insight/MixinLineMarkerProvider.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -22,6 +22,7 @@ import com.demonwav.mcdev.asset.MixinAssets import com.demonwav.mcdev.platform.mixin.util.findSourceClass +import com.demonwav.mcdev.platform.mixin.util.isAccessorMixin import com.demonwav.mcdev.platform.mixin.util.isMixin import com.demonwav.mcdev.platform.mixin.util.mixinTargets import com.intellij.codeInsight.daemon.GutterIconNavigationHandler @@ -50,6 +51,12 @@ return null } + val icon = if (element.isAccessorMixin) { + MixinAssets.MIXIN_ACCESSOR_MIXIN_ICON + } else { + icon + } + return LineMarkerInfo( identifier, identifier.textRange, Index: src/main/kotlin/platform/mixin/insight/target/MixinAccessorTargetLineMarkerProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/target/MixinAccessorTargetLineMarkerProvider.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/kotlin/platform/mixin/insight/target/MixinAccessorTargetLineMarkerProvider.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,80 @@ +/* + * Minecraft Development for IntelliJ + * + * https://mcdev.io/ + * + * 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 + * by the Free Software Foundation, version 3.0 only. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.demonwav.mcdev.platform.mixin.insight.target + +import com.demonwav.mcdev.asset.MixinAssets +import com.demonwav.mcdev.platform.mixin.action.FindMixinsAction +import com.demonwav.mcdev.platform.mixin.util.isAccessorMixin +import com.intellij.codeInsight.daemon.GutterIconNavigationHandler +import com.intellij.codeInsight.daemon.LineMarkerInfo +import com.intellij.codeInsight.daemon.LineMarkerProviderDescriptor +import com.intellij.openapi.editor.markup.GutterIconRenderer +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiIdentifier +import com.intellij.ui.awt.RelativePoint +import java.awt.event.MouseEvent + +class MixinAccessorTargetLineMarkerProvider : LineMarkerProviderDescriptor(), GutterIconNavigationHandler { + override fun getName() = "Accessor mixin target line marker" + override fun getIcon() = MixinAssets.MIXIN_TARGET_ACCESSOR_MIXIN_ICON + + override fun getLineMarkerInfo(element: PsiElement) = null + + override fun collectSlowLineMarkers( + elements: List, + result: MutableCollection> + ) { + for (element in elements) { + if (element !is PsiClass) { + continue + } + + val identifier = element.nameIdentifier ?: continue + + val mixins = FindMixinsAction.findMixins(element, element.project) ?: continue + if (mixins.none { it.isAccessorMixin }) { + continue + } + + result += LineMarkerInfo( + identifier, + identifier.textRange, + icon, + { "Go to accessor mixins" }, + this, + GutterIconRenderer.Alignment.LEFT, + { "accessor mixin target class indicator" }, + ) + } + } + + override fun navigate(e: MouseEvent, elt: PsiIdentifier) { + val targetClass = elt.parent as? PsiClass ?: return + FindMixinsAction.openFindMixinsUI( + targetClass.project, + targetClass, + { show(RelativePoint(e)) } + ) { + it.isAccessorMixin + } + } +} Index: src/main/kotlin/platform/mixin/insight/target/MixinTargetLineMarkerProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/target/MixinTargetLineMarkerProvider.kt (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/kotlin/platform/mixin/insight/target/MixinTargetLineMarkerProvider.kt (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -22,6 +22,7 @@ import com.demonwav.mcdev.asset.MixinAssets import com.demonwav.mcdev.platform.mixin.action.FindMixinsAction +import com.demonwav.mcdev.platform.mixin.util.isAccessorMixin import com.intellij.codeInsight.daemon.GutterIconNavigationHandler import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.codeInsight.daemon.LineMarkerProviderDescriptor @@ -34,7 +35,7 @@ class MixinTargetLineMarkerProvider : LineMarkerProviderDescriptor(), GutterIconNavigationHandler { override fun getName() = "Mixin target line marker" - override fun getIcon() = MixinAssets.MIXIN_CLASS_TARGET_ICON + override fun getIcon() = MixinAssets.MIXIN_TARGET_CLASS_ICON override fun getLineMarkerInfo(element: PsiElement) = null @@ -50,7 +51,7 @@ val identifier = element.nameIdentifier ?: continue val mixins = FindMixinsAction.findMixins(element, element.project) ?: continue - if (mixins.isEmpty()) { + if (mixins.all { it.isAccessorMixin }) { continue } @@ -68,6 +69,12 @@ override fun navigate(e: MouseEvent, elt: PsiIdentifier) { val targetClass = elt.parent as? PsiClass ?: return - FindMixinsAction.openFindMixinsUI(targetClass.project, targetClass, { show(RelativePoint(e)) }) + FindMixinsAction.openFindMixinsUI( + targetClass.project, + targetClass, + { show(RelativePoint(e)) } + ) { + !it.isAccessorMixin - } -} + } + } +} Index: src/main/resources/META-INF/plugin.xml =================================================================== --- src/main/resources/META-INF/plugin.xml (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/META-INF/plugin.xml (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -738,6 +738,8 @@ implementationClass="com.demonwav.mcdev.platform.mixin.insight.MixinElementLineMarkerProvider"/> + Index: src/main/resources/assets/icons/mixin/accessor_mark.svg =================================================================== --- src/main/resources/assets/icons/mixin/accessor_mark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/accessor_mark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,22 @@ + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_accessor.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_accessor.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_accessor.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,21 @@ + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_accessor_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_accessor_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_accessor_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,21 @@ + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_accessor_mixin.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_accessor_mixin.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_accessor_mixin.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,21 @@ + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_accessor_mixin_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_accessor_mixin_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_accessor_mixin_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,21 @@ + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_class_gutter.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_class_gutter.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/assets/icons/mixin/mixin_class_gutter.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -2,9 +2,9 @@ + style="fill:#353535;fill-opacity:1;stroke:none;stroke-width:0.254679" + d="m 6.9678914,0.19683995 c -0.341468,0.00529 -0.6011629,-0.00364 -0.8953919,-0.00232 l -2.7227888,0.01227 c -0.6977486,0.00314 -1.6257145,0.044913 -2.0932451,0.5864858 C 0.66434719,1.4791467 0.72113349,2.4156406 0.72113349,3.2305916 c 0,0.9753145 -0.1782273,2.4627812 0.32341811,3.4518442 0.3246702,0.4830193 0.6980969,0.6954003 1.1843265,0.9194336 0.2646524,0.065929 0.5085523,0.085449 0.7827149,0.085449 v 3.3188476 c -0.7810701,0.01846 -0.9245606,0.70929 -0.9245606,1.276611 0,0.258254 -0.057149,0.581144 0.023926,0.830567 0.1786833,0.549708 0.708335,0.819666 1.3278808,0.765625 0.9900515,-0.08637 0.9245606,-0.927193 0.9245606,-1.596192 0,-0.570844 -0.030389,-1.257196 -0.8527832,-1.276611 V 7.6873185 h 6.1164561 c 0.9263673,0 1.9955153,0.1370594 2.7753903,-0.4050293 0.389415,-0.270684 0.525389,-0.6483899 0.615235,-1.0629883 0.08333,-0.3845324 0.11277,-1.1048832 0.09542,-1.5571112 C 13.031453,2.1117073 11.743639,1.8949152 9.5570027,1.8152481 9.5510557,1.6176037 9.5044657,1.4294066 9.4373737,1.2410294 9.0914707,0.26940195 7.9922976,0.18043695 6.9678914,0.19683995 Z M 7.991573,1.0068986 c 0.9486697,0.2009938 1.0136337,1.6775833 0.070068,1.9362792 -0.3925112,0.1076196 -0.9653333,0.09411 -1.3746316,0.09411 h -2.917236 c -0.4614972,0 -1.1144016,0.038548 -1.5408957,-0.1368349 C 1.3628013,2.5442652 1.5928828,1.1327334 2.5142781,0.99493565 2.8769267,0.94072175 3.3090384,0.92720825 3.6769958,0.92334655 l 2.3377023,-0.024534 c 0.6215372,-0.00652 1.4951008,0.00607 1.9768749,0.10808605 z" /> Index: src/main/resources/assets/icons/mixin/mixin_class_gutter_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_class_gutter_dark.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/assets/icons/mixin/mixin_class_gutter_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -2,9 +2,9 @@ + style="fill:#e5a822;stroke:none;stroke-width:0.254679" + d="m 6.9678914,0.19683995 c -0.341468,0.00529 -0.6011629,-0.00364 -0.8953919,-0.00232 l -2.7227888,0.01227 c -0.6977486,0.00314 -1.6257145,0.044913 -2.0932451,0.5864858 C 0.66434719,1.4791467 0.72113349,2.4156406 0.72113349,3.2305916 c 0,0.9753145 -0.1782273,2.4627812 0.32341811,3.4518442 0.3246702,0.4830193 0.6980969,0.6954003 1.1843265,0.9194336 0.2646524,0.065929 0.5085523,0.085449 0.7827149,0.085449 v 3.3188476 c -0.7810701,0.01846 -0.9245606,0.70929 -0.9245606,1.276611 0,0.258254 -0.057149,0.581144 0.023926,0.830567 0.1786833,0.549708 0.708335,0.819666 1.3278808,0.765625 0.9900515,-0.08637 0.9245606,-0.927193 0.9245606,-1.596192 0,-0.570844 -0.030389,-1.257196 -0.8527832,-1.276611 V 7.6873185 h 6.1164561 c 0.9263673,0 1.9955153,0.1370594 2.7753903,-0.4050293 0.389415,-0.270684 0.525389,-0.6483899 0.615235,-1.0629883 0.08333,-0.3845324 0.11277,-1.1048832 0.09542,-1.5571112 C 13.031453,2.1117073 11.743639,1.8949152 9.5570027,1.8152481 9.5510557,1.6176037 9.5044657,1.4294066 9.4373737,1.2410294 9.0914707,0.26940195 7.9922976,0.18043695 6.9678914,0.19683995 Z M 7.991573,1.0068986 c 0.9486697,0.2009938 1.0136337,1.6775833 0.070068,1.9362792 -0.3925112,0.1076196 -0.9653333,0.09411 -1.3746316,0.09411 h -2.917236 c -0.4614972,0 -1.1144016,0.038548 -1.5408957,-0.1368349 C 1.3628013,2.5442652 1.5928828,1.1327334 2.5142781,0.99493565 2.8769267,0.94072175 3.3090384,0.92720825 3.6769958,0.92334655 l 2.3377023,-0.024534 c 0.6215372,-0.00652 1.4951008,0.00607 1.9768749,0.10808605 z" /> Index: src/main/resources/assets/icons/mixin/mixin_class_target_gutter.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_class_target_gutter.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/assets/icons/mixin/mixin_class_target_gutter.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) @@ -1,23 +0,0 @@ - - - - Index: src/main/resources/assets/icons/mixin/mixin_class_target_gutter_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_class_target_gutter_dark.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/assets/icons/mixin/mixin_class_target_gutter_dark.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) @@ -1,23 +0,0 @@ - - - - Index: src/main/resources/assets/icons/mixin/mixin_element.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_element.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/assets/icons/mixin/mixin_element.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -12,17 +12,17 @@ xmlns:svg="http://www.w3.org/2000/svg"> Index: src/main/resources/assets/icons/mixin/mixin_element_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_element_dark.svg (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/assets/icons/mixin/mixin_element_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -12,17 +12,17 @@ xmlns:svg="http://www.w3.org/2000/svg"> Index: src/main/resources/assets/icons/mixin/mixin_injector.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_injector.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_injector.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,18 @@ + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_injector_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_injector_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_injector_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,18 @@ + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_shadow.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_shadow.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_shadow.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,25 @@ + + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_shadow_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_shadow_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_shadow_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,25 @@ + + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_shadow_dark_alt.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_shadow_dark_alt.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_shadow_dark_alt.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,25 @@ + + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_target_accessor_mixin.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_target_accessor_mixin.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_target_accessor_mixin.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,28 @@ + + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_target_accessor_mixin_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_target_accessor_mixin_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_target_accessor_mixin_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,28 @@ + + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_target_class_gutter.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_target_class_gutter.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_target_class_gutter.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,23 @@ + + + + Index: src/main/resources/assets/icons/mixin/mixin_target_class_gutter_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_target_class_gutter_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) +++ src/main/resources/assets/icons/mixin/mixin_target_class_gutter_dark.svg (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -0,0 +1,23 @@ + + + + Index: src/main/resources/messages/MinecraftDevelopment.properties =================================================================== --- src/main/resources/messages/MinecraftDevelopment.properties (revision 62a893ebb8ff30b55612490b7f5b38414c662a70) +++ src/main/resources/messages/MinecraftDevelopment.properties (revision e7c276d995bdbf0ba977af6dfe5a9454f834e28e) @@ -318,7 +318,7 @@ minecraft.before=Before minecraft.after=After -mixin.codeVision.target.accessor.hint={0,choice, 0#no accessors|1#1 accessor|2#{0,number} accessors} +mixin.codeVision.target.accessor.hint={0,choice, 0#no accessor mixins|1#1 accessor mixin|2#{0,number} accessor mixins} mixin.codeVision.target.accessor.name=Accessor Mixins mixin.codeVision.target.hint={0,choice, 0#no mixins|1#1 mixin|2#{0,number} mixins} mixin.codeVision.target.name=Mixins