Learn · mappings
Что такое карты в Minecraft? Объяснение
Карты отображений в Minecraft — это таблицы имен, которые преобразуют обфусцированный код, например a.b.c, в читаемые имена, чтобы моды и клиенты могли читать и перехватывать игру.
Что такое маппинги в 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. Вот как эти три инструментария сравниваются по тем пунктам, которые имеют значение.
| MCP | Yarn | Mojang mappings | |
|---|---|---|---|
| Поддерживается | Сообществом (Searge + MCP) | FabricMC | Mojang |
| Эпоха | До версии 1.14 (с 1.7 по 1.12) | Начиная с версии 1.14 | Начиная с версии 1.14.4 |
| Происхождение | Разработано сообществом | Разработано сообществом | Официально от первой стороны |
| Типичное использование | Устаревшие клиенты, старое моддинг | Fabric | Fabric, Forge, NeoForge |
| Статус | Выведен из эксплуатации в пользу Mojmap | Активный | Активный по умолчанию |
Как mappings вписываются в инструментарий моддинга
Mappings выполняют свою работу во время компиляции, но не во время выполнения. Инструмент сборки берёт обфусцированный код игры, применяет к нему mappings и передаёт разработчику читаемую копию для работы. Когда мод готов, инструментарий перемаплирует его обратно, чтобы его ссылки соответствовали обфусцированным именам, находящимся в фактическом jar-файле игрока.
Загрузчики подходят к этому по-разному. Fabric собирается с использованием Yarn или базы, отображенной Mojang mappings, в зависимости от проекта. Forge исторически разделял работу, читая код через одну mapping, одновременно работая с другой. Лицензия на Mojang mappings достаточно разрешительна для использования во время сборки, поэтому большинство современных инструментариев опираются на неё.
Посредник: слой, обеспечивающий стабильность модов
Есть еще одно имя, которое стоит знать. Intermediary — это стабильный промежуточный слой, который Fabric использует, чтобы скомпилированный мод продолжал работать даже при изменении читаемых отображений. Читаемые имена (Yarn или Mojmap) располагаются сверху для людей, а Intermediary остается постоянным внизу для работающей игры. Searge выполнял ту же роль в мире MCP. Идея проста: фиксированный слой для бинарного файла, удобный слой для разработчика.
Часто задаваемые вопросы
Нет. Отображение просто переименовывает объекты для человека, пишущего код. Готовый мод перемапвывается обратно к зашифрованным именам, поэтому читаемые имена, с которыми вы работаете, никогда не попадают в игру игрока.
История и владение. MCP появился первым и поддерживал моддинг в эпоху до 1.14. Yarn вырос вместе с Fabric как открытое сообщество, а отображения Mojang появились, когда Mojang начала распространять официальные названия в 1.14.4.
Для текущей версии Minecraft стандартными вариантами являются отображения Mojang или Yarn. MCP в основном актуален для устаревших разработок эпохи 1.8.9, где все еще используется старая цепочка инструментов.
Нет. Отображение — это таблица имен. Мод-лоадер, такой как Fabric, — это среда выполнения, которая внедряет моды в игру. Они взаимодействуют, но решают совершенно разные задачи.
Получить Terminus
Built to track Minecraft's mappings so its modules keep working across versions.