Open Aaron1011 opened 6 years ago
I swear I tested this... Mixins are supposed to be unmapped in the context of their target so this should already be covered. I'll look into it anyway.
As it is I don't see overwrites being unmapped at all. I thought it's an issue with transformer exclusions before, but apparently it isn't the case (well, it was but fixing that still doesn't fix this issue). And I need it because my main mod is a runtime dependency if a sub-mod.
After debugging it myself, I think it's because MixinPreProcessorStandard#attachSpecialMethod
does "return false" when it's overwrite, without trying to remap it.
I verified that removing this if() fixes that one issue with overwrites, but there are still some issues with remapping @Shadow fields, so I end up with this exception:
net.minecraft.util.ReportedException: Exception ticking world
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:835) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:741) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) ~[IntegratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:590) [MinecraftServer.class:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
Caused by: java.lang.NoSuchFieldError: field_73005_l
at net.minecraft.world.WorldServer.redirect$redirectProviderCanDoRainSnowIce$zzn000(WorldServer.java:1713) ~[WorldServer.class:?]
at net.minecraft.world.WorldServer.updateBlocks(WorldServer.java:452) ~[WorldServer.class:?]
at net.minecraft.world.WorldServer.tick(WorldServer.java:234) ~[WorldServer.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:829) ~[MinecraftServer.class:?]
... 4 more
The above actually causes other issues and most likely just makes it not error when it should.
Similar to https://github.com/SpongePowered/Mixin/issues/276, this issue occurs when using an obfuscated jar in a development environment. If a Mixin class extends another Mixin (i.e. super-mixins), any
@Overwrite
methods it contains will not be de-obfuscated at runtime.