RetroMCP-Java icon indicating copy to clipboard operation
RetroMCP-Java copied to clipboard

Support TinyV2 Namespaced Mappings

Open halotroop2288 opened this issue 2 years ago • 6 comments

Projects like @FabricMC, @QuiltMC, @Legacy-Fabric, and @Babric already provide mappings that many people are used to using for other types of mods in Tiny format, using intermediary mappings that make porting mappings to other versions a lot easier.

I believe being able to use existing mappings for decompilation from projects that already maintain them would save a lot of time and effort, compared to remapping the supported versions from these groups yet again. And it would be a great help to people who are already used to using them.

Of course, this would be optional if implemented, but still great to have.

halotroop2288 avatar Jun 23 '22 20:06 halotroop2288

The functionality is already there to do so. Custom remapping schemes can be implemented through the Plugin API too, if necessary.

The only issue I can see from here, is that most mappings used externally for these versions are merged, which RMCP right now only merges AFTER remapping, instead of merging beforehand.

As for layered mappings, the Tiny v2 spec supports that in the form of namespaces, but if you mean remapping a JAR multiple times, again, a custom plugin can be used.

PhoenixVX avatar Jun 23 '22 20:06 PhoenixVX

If you have a specific implementation that can easily be implemented and support most other types, it would be quite neat.

Also, as an aside, RMCP uses Mappings IO which can read most, if not all, mapping formats that are used by FabricMC and even some by Forge.

PhoenixVX avatar Jun 23 '22 20:06 PhoenixVX

When I said "layered" what I really meant was namespaces. I would like to see the merging done before remapping for Tiny support though. It would be much appreciated.

halotroop2288 avatar Jun 23 '22 21:06 halotroop2288

Merging cannot be done before remapping for versions earlier than 1.3. Obfuscation map between client and server is not the same. Which means a class in client might be, let's say RenderPlayer and in server it's World

Lassebq avatar Jun 27 '22 10:06 Lassebq

Though if you want official -> intermediary <merge here> -> named, that can be done, only if intermediary mappings were properly matched

Lassebq avatar Jun 27 '22 10:06 Lassebq

Updating this to say that merged mappings are now solely used on v2 version metadata (https://github.com/MCPHackers/MCPHackers.github.io/tree/main/versionsV2)

PhoenixVX avatar May 22 '23 14:05 PhoenixVX