diff --git a/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/clazz/CTransformerAnnotationVisitor.kt b/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/clazz/CTransformerAnnotationVisitor.kt index 6edb4f13..a70d09a3 100644 --- a/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/clazz/CTransformerAnnotationVisitor.kt +++ b/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/clazz/CTransformerAnnotationVisitor.kt @@ -35,6 +35,7 @@ class CTransformerAnnotationVisitor( private val refmap = refmapBuilder.refmap private val mixinName = refmapBuilder.mixinName private val targetClasses = refmapBuilder.targetClasses + private val noRefmap = refmapBuilder.mixinRemapExtension.noRefmap.contains("JarModAgent") private val classTargets = mutableListOf() private val classValues = mutableListOf() @@ -47,7 +48,7 @@ class CTransformerAnnotationVisitor( override fun visitArray(name: String?): AnnotationVisitor { return when (name) { JarModAgent.AnnotationElement.NAME -> { - return object: AnnotationVisitor(Constant.ASM_VERSION, super.visitArray(name)) { + return object: AnnotationVisitor(Constant.ASM_VERSION, if (noRefmap) null else super.visitArray(name)) { override fun visit(name: String?, value: Any) { classTargets.add(value as String) super.visit(name, value) @@ -71,7 +72,11 @@ class CTransformerAnnotationVisitor( } override fun visitEnd() { - super.visitEnd() + val targets = if (noRefmap && classTargets.isNotEmpty()) { + super.visitArray(AnnotationElement.TARGETS) + } else { + null + } if (remap) { logger.info("existing mappings: $existingMappings") for (target in classTargets.toSet()) { @@ -86,12 +91,20 @@ class CTransformerAnnotationVisitor( } clz.ifPresent { refmap.addProperty(target, mapper.mapName(it)) + targets?.visit(null, target) } if (!clz.isPresent) { + targets?.visit(null, target) logger.warn("Failed to resolve class $target in mixin ${mixinName.replace('/', '.')}") } } + } else { + for (target in classTargets) { + targets?.visit(null, target) + } } + targets?.visitEnd() targetClasses.addAll((classValues + classTargets.map { it.replace('.', '/') }).toSet()) + super.visitEnd() } } diff --git a/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/method/CAbstractMethodAnnotationVisitor.kt b/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/method/CAbstractMethodAnnotationVisitor.kt index 22358722..5143baef 100644 --- a/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/method/CAbstractMethodAnnotationVisitor.kt +++ b/src/mapping/kotlin/xyz/wagyourtail/unimined/internal/mapping/extension/jma/refmap/annotations/method/CAbstractMethodAnnotationVisitor.kt @@ -36,7 +36,7 @@ abstract class CAbstractMethodAnnotationVisitor( protected val mixinName = refmapBuilder.mixinName protected val targetClasses = refmapBuilder.targetClasses protected val allowImplicitWildcards = refmapBuilder.allowImplicitWildcards - protected val noRefmap = refmapBuilder.mixinRemapExtension.noRefmap.contains("BaseMixin") + protected val noRefmap = refmapBuilder.mixinRemapExtension.noRefmap.contains("JarModAgent") override fun visit(name: String?, value: Any) { super.visit(name, value)