FabricMC / fabric-loom

Gradle build system plugin used to automate the setup of a minecraft mod development environment.
MIT License
242 stars 211 forks source link

Layered remapping failure in some cases #1209

Open LambdAurora opened 2 weeks ago

LambdAurora commented 2 weeks ago

The Problem

Since loom 1.7 layered mappings cannot be used to combine Mojang mappings with any kind of mappings that remap only a base method or a base class and not the bridge variants or the sub-classes.

So far this creates several issues:

Reproduction

Reproduction is rather simple: create a standard loom-based project, add layered mappings with first the Mojang mappings layer, add on top either Yarn or YALMM.

To complete further the reproduction, add as middle layer Parchment, we would then end up with:

Hacky Solution

To avoid being stuck in my own projects I've pioneered a temporary and hacky solution, which consists in having my own Mojang mappings layer to exclude the bridge variants of methods:

This is not a suitable solution for production though: Parchment cannot be used with it as Parchment still include bridge variants of the methods, thus still creating conflicts because then the remapper doesn't understand anymore that Parchment is not trying to rename, only to provide arguments names and javadocs.

More Information

Various information I've gathered from discussions on Discord:

modmuss50 commented 1 week ago

Another case worth looking at is laying an empty tiny ontop of Mojamps, as reproduced here: https://github.com/embeddedt/fabric-mappings-repro-project

See: https://discord.com/channels/507304429255393322/842691768175951942/1305164539251130502