Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Новая жизнь Java Edition или маппинги в массы!

Dymeth

Активный участник
Пользователь
Баллы
98
Имя в Minecraft
Dymeth
Сегодня стало известно о том, что Mojang опубликовали собственные маппинги Minecraft Java Edition для клиентской и серверной сторон.
Сегодняшний день важен для всего коммьюнити Minecraft Java.
Есть шанс, что проекты MCP, Forge, Fabric, Spigot и Paper могут начать их поддерживать.

Что такое маппинги?
Если говорить простым языком - Mojang предоставили сторонним разработчикам возможность получать исходный код игры, который до этого момента был недоступен. В данный момент MCP, Forge, Fabric, Spigot и прочие популярные системы работают с собственными маппингами, которые составляются людьми, не имеющим к Mojang никакого отношения. Этот процесс довольно затратен по времени, поскольку приходится разбираться в обфусцированном (защищённом коде).
* "MCP писался разработчиком майна Searge" (спасибо nyuhnyash за уточнение).

Некоторую дополнительную информацию можно найти на в Minecraft Wiki:
На английском - всегда наиболее актуальный вариант
На русском - сейчас актуален, но при изменениях может обновляться дольше

Что это даст игрокам?
Игровое коммьюнити получит возможность скачивать обновления своих любимых плагинов и модов практически сразу после выхода новой версии игры - больше никаких задержек по несколько месяцев.
Также моды с большей вероятностью смогут запускаться сразу на нескольких версиях игры. Гарантий этого нет, но шанс довольно велик.

Что это даст разработчикам?
Естественно, возможность оперативно выпускать обновления своих продуктов и наслаждаться отсутствием обфускации. Похоже, Minecraft Java действительно хочет поддержать независимых разработчиков.
Однако у этой ситуации есть и обратная медаль: скорее всего, мы так никогда и не получим Mod API, которое нам обещали довольно давно. Судя по всему, Mojang решили, что коммпьюнити разработчиков само прекрасно справляется благодаря своим же API - существуют MCP, Forge и Fabric. Но, так или иначе, мы лишаемся официальной поддержки в случае каких-либо проблем.
На самом деле, не всё так радужно, ещё и по той причине, что маппинги от Mojang содержат лишь имена классов, имена полей классов и имена методов. А вот имена аргументов методов и переменных внутри них по-прежнему придётся деобфусцировать неофициальными средствами.

UPD: Чудо уже свершилось. Для Spigot появился specialsource, для Paper появился paperweight. Я написал статью о том, как это использовать: http://rubukkit.org/threads/179669/

Маппинги публикуются лишь начиная с версии 1.14.4 (в том числе для снапшотов и релиз-кандидатов).

Для начала открываем список всех версий:
https://launchermeta.mojang.com/mc/game/version_manifest.json

После этого находим нужную (например, релиз 1.20.1):
https://piston-meta.mojang.com/v1/packages/715ccf3330885e75b205124f09f8712542cbe7e0/1.20.1.json

Ссылки на маппинги находятся в блоках "downloads.client_mappings" и "downloads.server_mappings" соответственно.

Пример маппингов сервера на 1.20.1:
https://piston-data.mojang.com/v1/objects/0b4dba049482496c507b2387a73a913230ebbd76/server.txt

Что нас ждёт дальше?
На самом деле, политика Microsoft в данном случае не совсем понятна.
По задумке компания должна продвигать версию Bedrock Edition, дабы окупить затраты на приобретение игры. Возможно мы постепенно подходим к моменту, когда разработка Java Edition будет полностью передана в руки коммпьюнити. Как это скажется на игре - покажет время.
Что вы думаете об этом шаге Mojang и о будущем Minecraft в целом?

Приведённая в топике информация - выражение моего личного мнения. Оно может не совпадать с вашим или вовсе не иметь ничего общего с реальностью.

Bedrock Edition
С Minecraft Bedrock Edition возникла ровно противоположная ситуация - в версии 1.13.0.9 были удалены отладочные символы. Это ставит под угрозу будущее проекта PocketMine и будущее серверов Bedrock Edition в целом. Комментарий разработчика: https://forums.pmmp.io/threads/1-13-debug-symbols-and-the-titanic.8571/
Возможно, дело в том, что Mojang хочет сократить количество читеров.

UPD 04.09.19: Fabric уже реализовал возможность использовать официальные маппинги. Прогнозы по Spigot не особо перспективные, поскольку он изначально использует маппинги от mc-dev, а не MCP. Вероятно, это связано с попыткой избежать возможных юридических проблем в будущем.

UPD 24.08.20: Dinnerbone сообщил о изменениях в юридических особенностях использования маппингов и призвал различные проекты коммьюнити перейти на них: https://twitter.com/dinnerbone/status/1293597326561488897
https://twitter.com/Dinnerbone/status/1297906606127095809
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
UPD 01.05.21:
По информации из блога Airplane, недавно Spigot начал внедрение официальных маппингов. В данный момент всё ограничивается лишь поддержкой официальных имён пакетов. Посмотрим, что будет дальше.
On March 15th, md_5 pushed an update to Spigot which changed their patching system to use package names to the ones provided by Mojang’s official mappings

UPD 11.06.21: md_5 (разработчик Spigot) заявил о (частичном?) переходе на официальные маппинги:
https://www.spigotmc.org/threads/spigot-bungeecord-1-17.510208/#post-4184317

Краткая суть:

При использовании BuildTools готовый jar-файл будет содержать лишь официальные названия пакетов и классов. Именно на таком ядре будут работать все spigot-сервера.

При использовании BuildTools с флагом --remapped готовый jar-файл будет содержать официальные названия пакетов и классов, а также названия методов и переменных класса (т.е. всё, что присутствует в маппингах). Сам файл располагается по пути BuildTools\Spigot\Spigot-Server\target\spigot-VERSION-remapped-mojang.jar

Данную версию spigot-ядра можно использовать исключительно для разработки, согласно соглашению об использовании Mojang Mappings. После сборки проектов, использующих NMS, будет необходимо привести названия методов и переменных в исходный обфусцированный вид. Подробнее о том, как это сделать, читайте по ссылке на источник (в начале информации об обновлении).

UPD 14.11.21: Paper реализовал собственный механизм работы с маппингами под названием paperweight. Я написал туториал о том, как их использовать: http://rubukkit.org/threads/179669/


UPD 14.06.24: Прикрепляю ссылку на удобный веб-инструмент для просмотра разных видов маппингов под разные версии: https://mappings.cephx.dev/

UPD 29.10.25: Mojang полностью отказались от обфускации Java-версии Minecraft, нужды в маппингах больше не будет (читать тут). Однако юридические вопросы касательно кода по-прежнему актуальны
 
Последнее редактирование:
Есть легальные проблемы связанные с этими маппингами.
Непонятно пока в каких случаях их можно использовать, а в каких нельзя.

Например:
Можно ли распространять исходники классов или сами классы модов, которые используют деобфусцированные имена?
Можно ли распространять патчи к ванильним классам использующие эти имена?
Можно ли автоматически загружать маппинги и деобфусцировать сервер/клиент для сборки локальной копии, которая не будет рапространяться третьим лицам?
И таких вопросов куча.
 
Есть легальные проблемы связанные с этими маппингами.
Непонятно пока в каких случаях их можно использовать, а в каких нельзя.

Например:
Можно ли распространять исходники классов или сами классы модов, которые используют деобфусцированные имена?
Можно ли распространять патчи к ванильним классам использующие эти имена?
Можно ли автоматически загружать маппинги и деобфусцировать сервер/клиент для сборки локальной копии, которая не будет рапространяться третьим лицам?
И таких вопросов куча.

Поскольку EULA не меняли (по крайней мер об этом громко не кричали), то по сути ничего не изменилось. Логика осталась прежней: ты можешь загрузить к себе эти маппинги, можешь их использовать для деобфускации, но не можешь распространять результат.
Т.е. схема BuildTools от спигота — работает, просто теперь есть ещё и эти файлы.
 
Поскольку EULA не меняли (по крайней мер об этом громко не кричали), то по сути ничего не изменилось. Логика осталась прежней: ты можешь загрузить к себе эти маппинги, можешь их использовать для деобфускации, но не можешь распространять результат.
Т.е. схема BuildTools от спигота — работает, просто теперь есть ещё и эти файлы.
Проблема не в этих файлах, а например в крафтбакките и в патчах для ванильного сервера.
 
Проблема не в этих файлах, а например в крафтбакките и в патчах для ванильного сервера.
Патчи по сути не содержат деобфусцированного исходного кода всей игры, а только новый или изменененный (другой) код, использующий деобфусцированные имена. Так что проблем быть не должно.
 
Патчи по сути не содержат деобфусцированного исходного кода всей игры, а только новый или изменененный (другой) код, использующий деобфусцированные имена. Так что проблем быть не должно.
По сути да, а вот с точки зрения бюрократии - хз. Серая зона короче.
 
44936c823994ebcb37e051daf5f1515e45dcbbdd


Грубо говоря вопрос именно использовании модами имён был задан, но как видно разрешения не было получено, и моджанг пока думает над ответом.
 
44936c823994ebcb37e051daf5f1515e45dcbbdd
Грубо говоря вопрос именно использовании модами имён был задан, но как видно разрешения не было получено, и моджанг пока думает над ответом.
В августе этого года Dinnerbone был опубликован интересный пост:
https://twitter.com/dinnerbone/status/1293597326561488897

В нём сказано, что были скорректированы юридические правила использования маппингов. И якобы Mojang/Microsoft хотят сплотить сообщество, поэтому желают, чтобы различные проекты начали переходить на официальные маппинги. Подразумеваются MCP, Forge, Spigot и другие.

Прошло уже 2 с половиной месяца, но никаких новостей от самих проектов нет. Я думаю, либо не хотят ничего менять, либо до сих пор боятся юридических подлянок от Microsoft.
 
В августе этого года Dinnerbone был опубликован интересный пост:
twitter.com/dinnerbone/status/1293597326561488897

В нём сказано, что были скорректированы юридические правила использования маппингов. И якобы Mojang/Microsoft хотят сплотить сообщество, поэтому желают, чтобы различные проекты начали переходить на официальные маппинги. Подразумеваются MCP, Forge, Spigot и другие.

Прошло уже 2 с половиной месяца, но никаких новостей от самих проектов нет. Я думаю, либо не хотят ничего менять, либо до сих пор боятся юридических подлянок от Microsoft.
Это и так понятно было, иначе зачем еще дарить мапинги.
 
В августе этого года Dinnerbone был опубликован интересный пост:
https://twitter.com/dinnerbone/status/1293597326561488897

В нём сказано, что были скорректированы юридические правила использования маппингов. И якобы Mojang/Microsoft хотят сплотить сообщество, поэтому желают, чтобы различные проекты начали переходить на официальные маппинги. Подразумеваются MCP, Forge, Spigot и другие.

Прошло уже 2 с половиной месяца, но никаких новостей от самих проектов нет. Я думаю, либо не хотят ничего менять, либо до сих пор боятся юридических подлянок от Microsoft.
Да, теперь технически имена из маппингов использовать можно. А вот сами маппинги все ещё нет, а значит никакой возможности сделать автоматическую сборку чего-либо нибудь, только говорить пользователю скачай маппинги, положи куда надо, и дальше собирай. Плюс всё ещё непонятно с чего такая щедрость, и сколько ещё это продлится, потому все пока предпочитают использовать свои маппинги, и свои средства для их обновления на новую версию, просто чтобы быть готовым к изменениям лицензии маппингов, или их удалению.
 
Да, теперь технически имена из маппингов использовать можно. А вот сами маппинги все ещё нет, а значит никакой возможности сделать автоматическую сборку чего-либо нибудь, только говорить пользователю скачай маппинги, положи куда надо, и дальше собирай. Плюс всё ещё непонятно с чего такая щедрость, и сколько ещё это продлится, потому все пока предпочитают использовать свои маппинги, и свои средства для их обновления на новую версию, просто чтобы быть готовым к изменениям лицензии маппингов, или их удалению.
Ох уж эти пендосы, собственной тени бояться. Даже когда им дали в руки мапинги и сказали берите, все равно трясуться.
 
Да, теперь технически имена из маппингов использовать можно. А вот сами маппинги все ещё нет, а значит никакой возможности сделать автоматическую сборку чего-либо нибудь, только говорить пользователю скачай маппинги, положи куда надо, и дальше собирай. Плюс всё ещё непонятно с чего такая щедрость, и сколько ещё это продлится, потому все пока предпочитают использовать свои маппинги, и свои средства для их обновления на новую версию, просто чтобы быть готовым к изменениям лицензии маппингов, или их удалению.
А если аккуратно скрестить существующие маппинги общественности и можанговские, заткнув тем самым оставшиеся дыры. Просто интересно, как в этом случае работают "авторские права"?
 
А если аккуратно скрестить существующие маппинги общественности и можанговские, заткнув тем самым оставшиеся дыры. Просто интересно, как в этом случае работают "авторские права"?
Очень просто, даже если что-то используется частично, оно всё равно используется.
 
Очень просто, даже если что-то используется частично, оно всё равно используется.
Ну вот самопальные маппинги народ делал исходя из логики работы кода, называл переменные, классы и функции логичными именами. А как доказать, что очередной добавленный маппиг класса был взят именно из опубликованных данных?
 
Ну вот самопальные маппинги народ делал исходя из логики работы кода, называл переменные, классы и функции логичными именами. А как доказать, что очередной добавленный маппиг класса был взят именно из опубликованных данных?
Легко, когда есть дорогие юристы.
 
Удочку они уже закинули, теперь ждут поклев...
 
Легко, когда есть дорогие юристы.
Тогда и к похожим именам придерутся ага. Вот только в этом смысла ровно ноль, что можно предъявить обычному нищему студенту?). Просто уйдут в минуса на суды.
 
Тогда и к похожим именам придерутся ага. Вот только в этом смысла ровно ноль, что можно предъявить обычному нищему студенту?). Просто уйдут в минуса на суды.
++
Вряд ли что-то случится, но мало-ли где может что-то достаточно прибыльное выстрелить, но я очень сомневаюсь.
 

Поделиться этой страницей

Назад
Верх