Карта обфускации

Только для Java Edition
|


**Карты обфускации** — это файлы сопоставлений ProGuard от старых (изначальных) к новым (обфусцированным) имена классов и переменных, которые были переименованы.[1] Они экспортируются в client.json для каждой версии, доступной в лаунчере, начиная с 19w36a, и client.json для 1.14.4, который был слегка обновлён после выпуска 19w36a, чтобы тоже включать в себя карты обфускации.[2]

## Использование

Карты обфускации могут использоваться для расшифровки трассировок стека (например, в отчётах об ошибках) к более понятному виду.[3]

Dinnerbone и Адриан Эстергорд предположили, что карты обфускации могут сделать разработку модов легче.[4][5] Searge разъяснил, что карты обфускации могут заменить сторонние средства, например Minecraft Coder Pack.[6]

12 августа 2020 Dinnerbone заявил, что разработчики могут переходить на использование официальных названий от Mojang, приведённых в картах обфускации.[7]

### Использование в сторонних проектах

Карты обфускации содержат достаточно сведений, чтобы деобфусцировать *Minecraft* для декомпиляции. Для этих целей есть сторонние программы.

Согласно лицензии, такой декомпилированный исходный код можно распространять лишь в модифицированном виде или в виде части большего проекта. До 14 августа 2020 позволялось лишь использовать его только в личных целях.

## Лицензия

Каждый файл карты обфускации начинается со строки, обозначающей лицензию карт.

Текущая лицензия используется с версии 21w03a:

# (c) 2020 Microsoft Corporation. These mappings are provided "as-is" and you bear the risk of using them. You may copy and use the mappings for development purposes, but you may not redistribute the mappings complete and unmodified. Microsoft makes no warranties, express or implied, with respect to the mappings provided here. Use and modification of this document or the source code (in any form) of Minecraft: Java Edition is governed by the Minecraft End User License Agreement available at https://account.mojang.com/documents/minecraft_eula.

Версии до 21w03a имеют слегка другую лицензию.

# (c) 2020 Microsoft Corporation. All rights reserved. These mappings are provided "as-is" and you bear the risk of using them. You may copy and use the mappings for development purposes, but you may not redistribute the mappings complete and unmodified. Microsoft makes no warranties, express or implied, with respect to the mappings provided here. Use and modification of source code for Minecraft: Java Edition is governed by the Minecraft End User License Agreement available at https://account.mojang.com/documents/minecraft_eula.

Карты обфускации для отсутствующих в лаунчере версий, опубликованных до 14 августа 2020, например Combat Tests, доступны по старой лицензии.

# (c) 2019 Microsoft Corporation. All rights reserved. This information is provided "as-is" and you bear the risk of using it. This information does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this information for your internal, reference purposes. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Согласно Dinnerbone, любые карты обфускации, выпущенные до обновления лицензии 14 августа 2020, доступны по данной старой лицензии, а также новой.[8]

## История

3 сентября 2019 | Dinnerbone упоминает о «маленьком сюрпризе для моддеров!» в 19w36a. | ||||
---|---|---|---|---|---|

Официальный выпуск Java Edition | |||||

1.15 | 19w36a | Ссылки на скачивание клиентских и серверных карт обфускации теперь доступны в client.json. | |||

4 сентября 2019 | Dinnerbone выпускает карты обфускации и для версии 1.14.4. | ||||

12 августа 2020 | Dinnerbone сообщает об обновлении лицензии к картам обфускации Mojang, заявляя в другом твите, что это «поможет с совместимостью». | ||||

Он также показал предварительную версию обновлённой лицензии. | |||||

14 августа 2020 | Лицензия карт обфускации была обновлена. | ||||

version_manifest.json был обновлён так, чтобы файлы client.json для 1.14.4 и версий с 19w36a ссылались на обновлённые карты обфускации. | |||||

1.17 | 21w03a | Изменены формулировки в лицензии. |


## Интересные факты

- Из всех версий, выпущенных после 19w36a (4 сентября 2019), только Combat Test 3 не имеет опубликованных карт обфускации.
- В отличие от предыдущих Combat Tests, версия, от которой она ответвлена, имеет опубликованные карты обфускации.
- Все последующие Combat Tests имеют опубликованные карты обфускации и основаны на версиях с опубликованными картами обфускации.

- До обновления лицензии 16 августа 2020, версии, выпущенные в 2020 году, содержали
`# (c) 2019 Microsoft Corporation.`

в строке о лицензии карт обфускации.- Несмотря на то, что Combat Test 8b опубликована после обновления лицензии, она всё ещё использует старую строку о лицензии с 2019 годом.

- В клиентских картах обфускации, самая первая значащаяся функция называется
`youJustLostTheGame()`

, пасхальное яйцо, отсылающее к The Game.- Эта функция отвечает за вызов аварийного завершения игры при зажатии комбинации клавиш
`Ctrl`+`F3`+`C`на 10 секунд.

- Эта функция отвечает за вызов аварийного завершения игры при зажатии комбинации клавиш

## Примечания

- ↑ "ProGuard manual | Usage" – Guardsquare.
- ↑ «I've been pushing for this for a while, so I'm really happy that we were finally able to release the obfuscation mappings public. @SeargeDP had a great idea to release the 1.14.4 mappings as comparison, so those are going out right now.» — @Dinnerbone, 4 сентября 2019.
- ↑ "ProGuard manual | Retrace" – Guardsquare.
- ↑ «Tomorrow's snapshot has a small surprise for modders! Should make one or two people happy :)» — @Dinnerbone, 3 сентября 2019.
- ↑ «Happy modding!» — @adrian_ivl, 4 сентября 2019.
- ↑ «This should answer the questions of everyone who kept asking about MCP updates for newer versions of Minecraft. Spoiler: there won't be any, they are finally not necessary anymore.» — @SeargeDP, 4 сентября 2019.
- ↑ «We would like to see projects start to switch to the official Mojang names, to help bring the entire modding community together and help with compatibility.» — @Dinnerbone, 12 августа 2020.
- ↑ «Existing mappings will still be available under the old terms, but we will also republish them with the new terms on Friday. All new mappings provided in the future will be under the new terms.» — @Dinnerbone, 12 августа 2020.