mirror of
https://github.com/architectury/architectury-plugin.git
synced 2026-03-28 04:07:01 -05:00
Properly apply @ForgeMod
This commit is contained in:
@@ -13,9 +13,10 @@ import net.fabricmc.tinyremapper.TinyRemapper
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.objectweb.asm.*
|
||||
import org.objectweb.asm.ClassReader
|
||||
import org.objectweb.asm.ClassWriter
|
||||
import org.objectweb.asm.Opcodes
|
||||
import org.objectweb.asm.tree.ClassNode
|
||||
import org.objectweb.asm.tree.InsnNode
|
||||
import org.objectweb.asm.tree.MethodInsnNode
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
@@ -157,7 +158,7 @@ modId = "$fakeModId"
|
||||
architectFolder.deleteRecursively()
|
||||
remapper.finish()
|
||||
|
||||
intermediate.toFile().delete()
|
||||
// intermediate.toFile().delete()
|
||||
|
||||
if (!Files.exists(output)) {
|
||||
throw RuntimeException("Failed to remap $input to $output - file missing!")
|
||||
@@ -245,12 +246,22 @@ modId = "$fakeModId"
|
||||
private fun transform(node: ClassNode): ClassNode {
|
||||
if (node.access and Opcodes.ACC_INTERFACE == 0 && node.visibleAnnotations?.any { it.desc == forgeEvent } == true) {
|
||||
node.superName = "net/minecraftforge/eventbus/api/Event"
|
||||
node.methods.forEach {
|
||||
if (it.desc.startsWith("<init>(")) {
|
||||
it.instructions.insert(MethodInsnNode(Opcodes.INVOKESPECIAL, "net/minecraftforge/eventbus/api/Event", "<init>", "()V"))
|
||||
it.instructions.insert(InsnNode(Opcodes.ALOAD))
|
||||
node.methods.forEach {
|
||||
if (it.name == "<init>") {
|
||||
for (insnNode in it.instructions) {
|
||||
if (insnNode.opcode == Opcodes.INVOKESPECIAL) {
|
||||
insnNode as MethodInsnNode
|
||||
if (insnNode.name == "<init>" && insnNode.owner == "java/lang/Object") {
|
||||
insnNode.owner = "net/minecraftforge/eventbus/api/Event"
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
node.signature?.let {
|
||||
node.signature = it.substringBeforeLast('L') + "Lnet/minecraftforge/eventbus/api/Event;"
|
||||
}
|
||||
}
|
||||
node.visibleAnnotations = (node.visibleAnnotations ?: mutableListOf()).apply {
|
||||
val invisibleEnvironments =
|
||||
|
||||
Reference in New Issue
Block a user