- Мэппинги — это таблицы соответствия, которые переводят обфусцированный код Minecraft в читаемые имена.
- Mojang перепутывает имена классов, полей и методов, и они меняются в каждой версии.
- Три, о которых вам предстоит услышать, — это MCP, Yarn и мэппинги Mojang (Mojmap).
- Мэппинг применяется во время компиляции, а не во время выполнения, поэтому он никогда не попадает к игрокам.
Карты отображений в Minecraft — это таблицы имен, которые переводят обфусцированный код игры в читаемые имена. Mojang поставляется с Minecraft с перепутанными именами классов и полей, такими как a.a.a, поэтому разработчики модов и клиенты применяют набор отображений, например, MCP, Yarn или официальные отображения Mojang, чтобы получить имена, которые они могут читать и в которые могут подключаться.
Где используется Opal
Opal — это мод для Fabric, поэтому он использует современные мэппинги в своей основе и предоставляет чистый API для скриптов GraalVM JavaScript. Вы пишете скрипты, используя понятные имена, не касаясь мэппингов самостоятельно. Ознакомьтесь с руководством по скриптам.
Почему существуют маппинги
Mojang обфусцирует Minecraft перед выпуском. Распространяемый jar переименовывает классы, методы и поля в короткие, бессмысленные строки, чтобы уменьшить размер файла и затруднить чтение кода. Именно эта перестановка и является причиной того, что нельзя просто открыть игру и начать её редактировать.
Маппинг — это словарь, который отменяет это. Он сопоставляет каждое обфусцированное имя с читаемым человеком, так что поле с именем field_70181_x становится motionY. При примененном маппинге разработчик видит код, выглядящий нормально, и может писать моды для него.
Здесь есть одно важное условие. Обфусцированные имена меняются в каждой версии Minecraft, поэтому одно и то же поле может быть a в одной версии и bk в следующей. Маппинги поглощают эти изменения, и именно поэтому они являются основой каждой цепочки инструментов для моддинга.
Три, о которых вы услышите
MCP (Mod Coder Pack) — это сообщественный маппинг, который сделал моддинг версий до 1.14 возможным. Он использовал двухслойную схему: проект Searge создавал стабильные, но некрасивые промежуточные имена, такие как field_70181_x, а MCP оборачивал их в понятные имена, такие как motionY. Большинство старых автономных клиентов 1.8.9 компилируются с исходным кодом, отображенным с помощью маппинга MCP, и используют MCP и Searge для рефлексии.
Ярн — это открытая карта, поддерживаемая FabricMC для экосистемы Fabric. Она поддерживается сообществом, имеет свободную лицензию и быстро обновляется при выходе новой версии Minecraft, что является одной из причин, по которой моды для Fabric быстро получают новые версии.
Карты Mojang, часто называемые Mojmap, — это собственные карты первой партии от Mojang, выпускаемые вместе с каждым официальным релизом начиная с версии 1.14.4. Поскольку они поступают непосредственно от Mojang, названия соответствуют тому, как разработчики на самом деле называют вещи. Они фактически заменили MCP и Searge в качестве стандарта для любых новых клиентов, нацеленных на 1.21 или более позднюю версию.
Как они соотносятся друг с другом
| MCP | Ярн | Карты Mojang | |
|---|---|---|---|
| Поддерживается | Сообществом (Searge + MCP) | FabricMC | Mojang |
| Эпоха | До 1.14 (1.7-1.12) | 1.14+ | 1.14.4+ |
| Источник | Получено сообществом | Получено сообществом | Официальный |
| Используется с | Устаревшие клиенты, старое моддинг | Fabric | Fabric, Forge |
| Статус | Выведены из эксплуатации картами Mojang | Активный | Активный по умолчанию |
Как карты вписываются в цепочку инструментов моддинга
Карта применяется во время компиляции, а не во время выполнения. Инструмент сборки берет обфусцированный код игры, применяет к нему карту и предоставляет вам читаемую версию для написания кода. Ваш готовый мод затем перемаппируется обратно, чтобы он соответствовал обфусцированным именам, которые фактически использует игра игрока.
Разные загрузчики обрабатывают это по-разному. Fabric собирается с использованием Yarn или базы, основанной на картах Mojang, в зависимости от проекта. Forge исторически разделял эту задачу, используя одну карту для исходного кода, который вы читаете, и другую — для того, что запускается. Лицензия на карты Mojang достаточно разрешительна для использования во время сборки, поэтому современные цепочки инструментов полагаются на них.
Часто задаваемые вопросы
Нет. Переименование влияет только на работу разработчика. Скомпилированный мод переназначается, чтобы соответствовать обфусцированному игровому коду, поэтому имена, которые вы видите при написании кода, никогда не попадают к игрокам.
История. MCP появилась первой и поддерживала сообщество до версии Minecraft 1.14. Yarn развивался вместе с Fabric как открытая альтернатива, а отображения от Mojang появились, когда Mojang начала публиковать официальные названия в версии 1.14.4.
Для современной версии Minecraft стандартными вариантами являются отображения от Mojang или Yarn. MCP актуален в основном для устаревших проектов, созданных в эпоху 1.8.9, где все еще используется старая цепочка инструментов.
Нет. Маппинг — это таблица имен, а загрузчик модов, например Fabric, — это среда выполнения, которая загружает моды в игру. Они работают вместе, но решают разные задачи.