так теперь расскажите мне пожалуйста что такоет мапинги
Маппинги по сути это просто текстовые файлы которые описывают названия классов, функций и полей внутри компилированного байткода
Но тут не всё так просто, маппинги можно поделить на маппинги исходников(с восстановленными названиями классов вручную после ренейма), SRG, и маппинги NOTCH(раньше назывались так), это маппинги уже обфусцированных ренеймом классов
Пока маппинги исходников предлагают названия такого формата (могут использоваться в средах разработки, к примеру MCP):
MinecraftClass#getMinecraftThing().minecraftField
Маппинги SRG выглядят так:
MinecraftClass#func_275891().field_27585
, это промежуточные маппинги, не особо интересны нам т.к. на данный момент вроде как вообще не используются при рантайме
Маппинги NOTCH предлагают названия такого формата:
bf#e().a
, где bf - фактически MinecraftClass, e() = getMinecraftThing(), a = minecraftField
Так происходит потому-что изначально майнкрафт был обработан чем-то на подобии или именно proguard'ом, после чего все названия классов начали называться просто буквами в алфавитном порядке, так-же как и их функции и поля, используются в конечной игре и использовать придётся именно названия полей с NOTCH маппингов (но для того что-бы ориентироваться в том что происходит, можно искать исходные названия функций и полей, и сверятся с оригинальным кодом)
С помощью маппингов можно найти детальные названия классов, функций и полей ориентируясь на исходные названия, и используя обфусцированные названия которые должны быть рядом
Как может выглядить файл маппингов? Вариации много, поэтому маппинги
необязательно должны выглядеть как пример
(Маппинги названий полей, fields.csv, 1.7.10)