Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overwrites are not 'unmapped' when using super-mixins #277

Open
Aaron1011 opened this issue Aug 1, 2018 · 3 comments
Open

Overwrites are not 'unmapped' when using super-mixins #277

Aaron1011 opened this issue Aug 1, 2018 · 3 comments

Comments

@Aaron1011
Copy link
Contributor

Similar to #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.

@Mumfrey
Copy link
Member

Mumfrey commented Aug 2, 2018

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.

@Barteks2x
Copy link

Barteks2x commented Aug 25, 2018

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.

@Barteks2x
Copy link

Barteks2x commented Sep 2, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants