Learn · mappings

Что такое карты в Minecraft? Объяснение

Карты отображений в Minecraft — это таблицы имен, которые преобразуют обфусцированный код, например a.b.c, в читаемые имена, чтобы моды и клиенты могли читать и перехватывать игру.

TRtrolPublished 5 min read

Что такое маппинги в Minecraft?

Маппинги в Minecraft — это таблицы соответствия, которые связывают обфусцированные символы игры с понятными человеку именами. Розничная версия поставляется с классами, методами и полями, переименованными в бессмысленные короткие строки, такие как a, bk или c.d.e. Набор маппингов, например, MCP, Yarn или маппинги Mojang, накладывает реальные имена поверх этого хаоса, чтобы разработчик мог читать код и взаимодействовать с ним.

Без маппинга игра технически открыта, но практически нечитаема. Применив маппинг, поле с меткой field_71090_bL отображается как что-то вроде experienceLevel, и весь код базы вдруг начинает выглядеть как обычное программное обеспечение.

Зачем Minecraft вообще нужны маппинги?

Маппинги существуют потому, что Mojang обфусцирует Minecraft перед каждым выпуском. Этап сборки переписывает каждый класс и член в короткие токены. Это немного уменьшает размер jar-файла, но в основном затрудняет понимание кода. Это стена, которую должны преодолеть все моды и клиенты.

Маппинг — это ключ к этой стене. Это список один к одному: обфусцированное имя слева, читаемое имя справа. Примените его ко всей игре, и перепутанный jar-файл превратится обратно в работоспособное исходное дерево.

Три набора отображений, о которых вам предстоит услышать

Существует множество проектов по отображению, но три из них доминируют в разговоре. Каждый из них относится к разной эпохе и принадлежит разным владельцам.

MCP (Mod Coder Pack)

MCP — это отображение, созданное сообществом, которое обеспечивало моддинг до версии 1.14. Оно работало в двух слоях. Проект Searge генерировал стабильные, но не очень привлекательные промежуточные имена, такие как func_70071_h_, а MCP затем наделял их дружелюбными именами, такими как onUpdate. Большинство старых автономных клиентов 1.8.9 по-прежнему компилируются с использованием дерева, отображенного MCP, и направляют свое отражение на имена MCP или Searge.

Yarn

Yarn — это открытое отображение, поддерживаемое FabricMC для экосистемы Fabric. Оно написано сообществом, имеет свободную лицензию и обычно быстро обновляется при выходе новой версии Minecraft. Эта быстрая реакция является важной причиной, по которой моды Fabric получают новые версии на ранних этапах.

Отображения Mojang

Отображения Mojang, часто сокращенно называемые Mojmap, — это собственные официальные имена Mojang, публикуемые вместе с каждым релизом начиная с версии 1.14.4. Поскольку они поступают непосредственно от разработчика, имена соответствуют тому, как вещи называют разработчики Mojang. Они фактически заменили MCP и Searge в качестве отправной точки для любого современного клиента.

MCP против Yarn против отображений Mojang

Кратко: MCP — это устаревший инструментарий, Mojang mappings — официальная замена, а Yarn находится между ними как открытое сообщество, которое чаще всего используется в проектах Fabric. Вот как эти три инструментария сравниваются по тем пунктам, которые имеют значение.

MCPYarnMojang mappings
ПоддерживаетсяСообществом (Searge + MCP)FabricMCMojang
ЭпохаДо версии 1.14 (с 1.7 по 1.12)Начиная с версии 1.14Начиная с версии 1.14.4
ПроисхождениеРазработано сообществомРазработано сообществомОфициально от первой стороны
Типичное использованиеУстаревшие клиенты, старое моддингFabricFabric, Forge, NeoForge
СтатусВыведен из эксплуатации в пользу MojmapАктивныйАктивный по умолчанию

Как mappings вписываются в инструментарий моддинга

Mappings выполняют свою работу во время компиляции, но не во время выполнения. Инструмент сборки берёт обфусцированный код игры, применяет к нему mappings и передаёт разработчику читаемую копию для работы. Когда мод готов, инструментарий перемаплирует его обратно, чтобы его ссылки соответствовали обфусцированным именам, находящимся в фактическом jar-файле игрока.

Загрузчики подходят к этому по-разному. Fabric собирается с использованием Yarn или базы, отображенной Mojang mappings, в зависимости от проекта. Forge исторически разделял работу, читая код через одну mapping, одновременно работая с другой. Лицензия на Mojang mappings достаточно разрешительна для использования во время сборки, поэтому большинство современных инструментариев опираются на неё.

Посредник: слой, обеспечивающий стабильность модов

Есть еще одно имя, которое стоит знать. Intermediary — это стабильный промежуточный слой, который Fabric использует, чтобы скомпилированный мод продолжал работать даже при изменении читаемых отображений. Читаемые имена (Yarn или Mojmap) располагаются сверху для людей, а Intermediary остается постоянным внизу для работающей игры. Searge выполнял ту же роль в мире MCP. Идея проста: фиксированный слой для бинарного файла, удобный слой для разработчика.

Часто задаваемые вопросы

Получить Terminus

Built to track Minecraft's mappings so its modules keep working across versions.