SpongePowered / Mixin

Mixin is a trait/mixin and bytecode weaving framework for Java using ASM
MIT License
1.37k stars 185 forks source link

[Forge] Stack Overflow when a invoked method is called #655

Closed linstar-fxt closed 7 months ago

linstar-fxt commented 7 months ago

Mixin Version: 0.8 Minecraft Version: 1.20.1 official mapping

@Mixin(MinecraftServer.class)
public interface MinecraftServerInvoker {
    @Invoker("updateMobSpawningFlags")
    void updateMobSpawningFlags();
}

Apply this mixin class and start Minecraft server. When Minecraft server instance try to call this method, it cause StackOverflowError

java.lang.StackOverflowError: null
    at net.minecraft.server.MinecraftServer.updateMobSpawningFlags(MinecraftServer.java) ~[forge-1.20.1-47.2.0_mapped_official_1.20.1-recomp.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:maps.mixins.json:MinecraftServerAccessor,pl:mixin:APP:maps.mixins.json:MinecraftServerInvoker,pl:mixin:A}
    at net.minecraft.server.MinecraftServer.updateMobSpawningFlags(MinecraftServer.java) ~[forge-1.20.1-47.2.0_mapped_official_1.20.1-recomp.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:maps.mixins.json:MinecraftServerAccessor,pl:mixin:APP:maps.mixins.json:MinecraftServerInvoker,pl:mixin:A}
    at net.minecraft.server.MinecraftServer.updateMobSpawningFlags(MinecraftServer.java) ~[forge-1.20.1-47.2.0_mapped_official_1.20.1-recomp.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:maps.mixins.json:MinecraftServerAccessor,pl:mixin:APP:maps.mixins.json:MinecraftServerInvoker,pl:mixin:A}
    at net.minecraft.server.MinecraftServer.updateMobSpawningFlags(MinecraftServer.java) ~[forge-1.20.1-47.2.0_mapped_official_1.20.1-recomp.jar%23191!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:maps.mixins.json:MinecraftServerAccessor,pl:mixin:APP:maps.mixins.json:MinecraftServerInvoker,pl:mixin:A}
linstar-fxt commented 7 months ago

Oh fine. This is caused by using the same method name.