1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Оффтопик", создана пользователем Dymeth, 4 сен 2019.

  1. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

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

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

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

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

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

    В данный момент маппинги присутствуют лишь в версиях 1.14.4 и новее (например, в снапшоте 1.15 - 19W36A).

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

    После этого находим нужную (например, релиз 1.14.4):
    https://launchermeta.mojang.com/v1/packages/74b5fb5fa9ec7b14abe60b468e40703cfbf8d10e/1.14.4.json

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

    Пример маппингов сервера на 1.14.4: https://launcher.mojang.com/v1/objects/448ccb7b455f156bb5cb9cdadd7f96cd68134dbd/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
    UPD 01.05.21:
    По информации из блога Airplane, недавно Spigot начал внедрение официальных маппингов. В данный момент всё ограничивается лишь поддержкой официальных имён пакетов. Посмотрим, что будет дальше.
    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, будет необходимо привести названия методов и переменных в исходный обфусцированный вид. Подробнее о том, как это сделать, читайте по ссылке на источник (в начале информации об обновлении).

    Судьба маппингов в Paper и его форках пока неизвестна. Предполагаю, что для разработки с использованием NMS будут использоваться всё те же инструменты Spigot
     
    Последнее редактирование: 12 июн 2021
  2. Быстрая раскрутка сервера Minecraft
  3. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Есть легальные проблемы связанные с этими маппингами.
    Непонятно пока в каких случаях их можно использовать, а в каких нельзя.

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

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Поскольку EULA не меняли (по крайней мер об этом громко не кричали), то по сути ничего не изменилось. Логика осталась прежней: ты можешь загрузить к себе эти маппинги, можешь их использовать для деобфускации, но не можешь распространять результат.
    Т.е. схема BuildTools от спигота — работает, просто теперь есть ещё и эти файлы.
     
  5. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Проблема не в этих файлах, а например в крафтбакките и в патчах для ванильного сервера.
     
  6. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Патчи по сути не содержат деобфусцированного исходного кода всей игры, а только новый или изменененный (другой) код, использующий деобфусцированные имена. Так что проблем быть не должно.
     
  7. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Просто файлы ничего не меняют.
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ограничение только на исходники майнкрафта и все.
     
  9. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    По сути да, а вот с точки зрения бюрократии - хз. Серая зона короче.
     
  10. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    [​IMG]

    Грубо говоря вопрос именно использовании модами имён был задан, но как видно разрешения не было получено, и моджанг пока думает над ответом.
     
  11. Автор темы
    Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Dymeth
    В августе этого года Dinnerbone был опубликован интересный пост:
    https://twitter.com/dinnerbone/status/1293597326561488897

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

    Прошло уже 2 с половиной месяца, но никаких новостей от самих проектов нет. Я думаю, либо не хотят ничего менять, либо до сих пор боятся юридических подлянок от Microsoft.
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Это и так понятно было, иначе зачем еще дарить мапинги.
     
  13. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Да, теперь технически имена из маппингов использовать можно. А вот сами маппинги все ещё нет, а значит никакой возможности сделать автоматическую сборку чего-либо нибудь, только говорить пользователю скачай маппинги, положи куда надо, и дальше собирай. Плюс всё ещё непонятно с чего такая щедрость, и сколько ещё это продлится, потому все пока предпочитают использовать свои маппинги, и свои средства для их обновления на новую версию, просто чтобы быть готовым к изменениям лицензии маппингов, или их удалению.
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ох уж эти пендосы, собственной тени бояться. Даже когда им дали в руки мапинги и сказали берите, все равно трясуться.
     
  15. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    А если аккуратно скрестить существующие маппинги общественности и можанговские, заткнув тем самым оставшиеся дыры. Просто интересно, как в этом случае работают "авторские права"?
     
  16. HauserGrim

    HauserGrim Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Artarious
    Очень просто, даже если что-то используется частично, оно всё равно используется.
     
  17. CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну вот самопальные маппинги народ делал исходя из логики работы кода, называл переменные, классы и функции логичными именами. А как доказать, что очередной добавленный маппиг класса был взят именно из опубликованных данных?
     
  18. HauserGrim

    HauserGrim Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Artarious
    Легко, когда есть дорогие юристы.
     
  19. NITDroid

    NITDroid Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NITDroid
    Удочку они уже закинули, теперь ждут поклев...
     
  20. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тогда и к похожим именам придерутся ага. Вот только в этом смысла ровно ноль, что можно предъявить обычному нищему студенту?). Просто уйдут в минуса на суды.
     
  21. HauserGrim

    HauserGrim Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    Artarious
    ++
    Вряд ли что-то случится, но мало-ли где может что-то достаточно прибыльное выстрелить, но я очень сомневаюсь.
     

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