diff --git a/src/main/kotlin/platform/mixin/handlers/mixinextras/MixinExtrasInjectorAnnotationHandler.kt b/src/main/kotlin/platform/mixin/handlers/mixinextras/MixinExtrasInjectorAnnotationHandler.kt index 2c16a9ac4..4214a0b18 100644 --- a/src/main/kotlin/platform/mixin/handlers/mixinextras/MixinExtrasInjectorAnnotationHandler.kt +++ b/src/main/kotlin/platform/mixin/handlers/mixinextras/MixinExtrasInjectorAnnotationHandler.kt @@ -21,6 +21,7 @@ package com.demonwav.mcdev.platform.mixin.handlers.mixinextras import com.demonwav.mcdev.platform.mixin.handlers.InjectorAnnotationHandler +import com.demonwav.mcdev.platform.mixin.handlers.injectionPoint.NewInsnInjectionPoint import com.demonwav.mcdev.platform.mixin.inspection.injector.MethodSignature import com.demonwav.mcdev.platform.mixin.inspection.injector.ParameterGroup import com.demonwav.mcdev.platform.mixin.util.FieldTargetMember @@ -219,7 +220,7 @@ abstract class MixinExtrasInjectorAnnotationHandler : InjectorAnnotationHandler( .resolveAsm(annotation.project) as? MethodTargetMember )?.classAndMethod val parameters = mutableListOf() - if (insn.opcode != Opcodes.INVOKESTATIC) { + if (insn.opcode != Opcodes.INVOKESTATIC && insn.name != "") { val receiver = if (insn.opcode == Opcodes.INVOKESPECIAL && !oldSuperBehavior) { targetClass.name } else { @@ -270,6 +271,10 @@ abstract class MixinExtrasInjectorAnnotationHandler : InjectorAnnotationHandler( Opcodes.INSTANCEOF -> listOf(Parameter("object", Type.getType(Any::class.java).toPsiType(elementFactory))) + Opcodes.NEW -> NewInsnInjectionPoint.findInitCall(insn)?.let { + getPsiParameters(it, targetClass, annotation) + } + else -> null } } diff --git a/src/main/kotlin/platform/mixin/handlers/mixinextras/WrapOperationHandler.kt b/src/main/kotlin/platform/mixin/handlers/mixinextras/WrapOperationHandler.kt index 76f215eb9..8dfd8e194 100644 --- a/src/main/kotlin/platform/mixin/handlers/mixinextras/WrapOperationHandler.kt +++ b/src/main/kotlin/platform/mixin/handlers/mixinextras/WrapOperationHandler.kt @@ -35,7 +35,8 @@ import org.objectweb.asm.tree.MethodNode class WrapOperationHandler : MixinExtrasInjectorAnnotationHandler() { override val supportedInstructionTypes = listOf( - InstructionType.METHOD_CALL, InstructionType.FIELD_GET, InstructionType.FIELD_SET, InstructionType.INSTANCEOF + InstructionType.METHOD_CALL, InstructionType.FIELD_GET, InstructionType.FIELD_SET, InstructionType.INSTANCEOF, + InstructionType.INSTANTIATION ) override fun getAtKey(annotation: PsiAnnotation): String {