- Баллы
- 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/
Что нас ждёт дальше?
На самом деле, политика 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 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, нужды в маппингах больше не будет (читать тут). Однако юридические вопросы касательно кода по-прежнему актуальны
Сегодняшний день важен для всего коммьюнити 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
Для начала открываем список всех версий:
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
UPD 01.05.21: По информации из блога Airplane, недавно Spigot начал внедрение официальных маппингов. В данный момент всё ограничивается лишь поддержкой официальных имён пакетов. Посмотрим, что будет дальше.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
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, нужды в маппингах больше не будет (читать тут). Однако юридические вопросы касательно кода по-прежнему актуальны
Последнее редактирование: