User Tools

Site Tools


ru:tutorial:mappings

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:tutorial:mappings [2022/02/22 20:19] – допереведу позже furnygoru:tutorial:mappings [2022/05/24 15:36] (current) – external edit 127.0.0.1
Line 20: Line 20:
 Изменяя маппинги в вашей среде разработки, вы можете ожидать, что имена классов, методов и полей в Minecraft и любых включенных модах изменились, и что ваш код, возможно, придется обновить, чтобы ссылаться на измененные имена. [[ru:tutorial:migratemappings|Этот процесс может быть частично автоматизирован]]. Вам также придется запустить ''genSources'', чтобы получить доступ к источникам Minecraft с обновленными маппингами. Изменяя маппинги в вашей среде разработки, вы можете ожидать, что имена классов, методов и полей в Minecraft и любых включенных модах изменились, и что ваш код, возможно, придется обновить, чтобы ссылаться на измененные имена. [[ru:tutorial:migratemappings|Этот процесс может быть частично автоматизирован]]. Вам также придется запустить ''genSources'', чтобы получить доступ к источникам Minecraft с обновленными маппингами.
  
-Задача Loom ''remapJar'' создаст основной артефакт мода, который представляет собой встроенный jar с использованием промежуточных имен. Кроме того, если присутствует задача ''Sourcesjar'', "remapSourcesJar" создаст jar-файл источников с использованием промежуточных имен. Эти банки могут быть установлены как моды или включены в среду разработки с конфигурацией зависимостей "modCompile".+Задача "remapJar" Loom'а создаст основной артефакт мода, который представляет собой встроенный jar с использованием промежуточных имен. Однако он не выполняет тестирование или проверку, ''build'' всегда должен использоваться для создания jar для использования конечным пользователем. Кроме того, если присутствует задача "sourcesJar", "remapSourcesJar" создаст jar-файл источников с использованием промежуточных имен. Эти jar-файлы могут быть установлены как моды или включены в среду разработки с конфигурацией зависимостей "modCompile".
  
-  * **The '-dev' jar (the ''jar'' task output) does not use intermediary names, and is therefore not useful.** It cannot be installed as a mod outside a development environment and will only work in a development environment with matching mappings. The regular jar (the ''remapJar'' task output) should be used instead and installed in development environments using mod-augmented dependency configurations like ''modCompile''. +  * ** Jar '-dev' (вывод задачи ''jar'') не использует промежуточные имена и поэтому бесполезен.** Он не может быть установлен как мод вне среды разработки и будет работать только в среде разработки с соответствующими маппингами. Вместо этого следует использовать обычный jar (вывод задачи ''remapJar'') и устанавливать его в средах разработки с использованием конфигураций зависимостей, дополненных модулями, таких как ''modCompile''. 
-  * **Yarn names are only applied in a development environment**. Outside a development environment, only intermediary names exist, meaning the code will not match exactly what you see and wrote. Loom transparently handles this transition for you, but be cautious when using reflection.+  * ** Имена Yarn применяются только в среде разработки **. Вне среды разработки существуют только промежуточные имена, что означает, что код не будет точно соответствовать тому, что вы видите и написали. Loom прозрачно обрабатывает этот переход для вас, но будьте осторожны при использовании отражения.
  
-=== Mojang's mappings ===+=== Маппинги Mojang ===
  
-As of Loom 0.5, you can also use Mojang's official mappings rather than Yarn, like this:+Начиная с версии Loom 0.5, вы также можете использовать официальные маппинги Mojang вместо Yarn, например:
  
 <code> <code>
Line 36: Line 36:
 </code> </code>
  
-Mojang's mappings come with a usable yet more restrictive license than Yarn. Use them at your own risk.+Маппинги Mojang поставляются с удобной, но более строгой лицензией, чем Yarn. Используйте их на свой страх и риск.
  
  
-=== Custom mappings ===+=== Свои маппинги ===
  
-You can use custom tiny mappings for Fabric Loom for your Gradle project setup.+Вы можете использовать свои небольшие маппинги для Fabric Loom для настройки вашего проекта Gradle.
  
-For example, if you have a custom branch of yarn which you want to use for mappings, you can build yarn with "./gradlew build" command, take out the jar file in "build/libs" directory, and move it to a folder "mapping" in your Gradle project. Then, change your mappings dependency entry to:+Например, если у вас есть пользовательская ветвь Yarn, которую вы хотите использовать для маппингов, вы можете скомпилировать Yarn с помощью команды "./gradlew build", извлечь файл jar из каталога "build/libs" и переместить его в папку "mapping" в вашем проекте Gradle. Затем измените запись зависимости маппингов на:
  
 <code> <code>
Line 51: Line 51:
 </code> </code>
  
-You can change the directory where you put mapping to have any custom name; just change the name in "dir" argument above. Note that Gradle build will fail if you have any other file than the mapping jar in the mapping directory!+Вы можете изменить каталог, в который вы помещаете маппинги, на любое пользовательское имя; просто измените имя в приведенном выше аргументе "dir". Обратите внимание, что сборка Gradle завершится ошибкой, если в каталоге маппингов у вас есть какой-либо другой файл, кроме jar-файла маппинга!
  
-==== Remapping ====+==== Ремаппинг ====
  
-Remapping is the process of applying mappings to code, transforming from one set of names to another. Both Java source code and compiled Java code can be remapped. It involves changing the names of references according to the mappings, as well as carefully renaming methods to preserve overrides. It does not change what the code does, although it will affect names used in [[tutorial:reflection|reflection]].+Ремаппинг - это процесс применения маппингов в коде, преобразования из одного набора имен в другой. Как исходный код Java, так и скомпилированный Java-код могут быть ремаппнуты. Это включает в себя изменение имен ссылок в соответствии с маппингами, а также тщательное переименование методов для сохранения переопределений. Это не меняет того, что делает код, хотя и повлияет на имена, используемые в [[ru:tutorial:reflection|отражении]].
  
-[[https://github.com/FabricMC/tiny-remapper|Tiny Remapper]] is a tool that can remap compiled Java code. It has a command line interface as well as a programmable interface. Loom uses Tiny Remapper for a number of tasks, and Fabric Loader uses Tiny Remapper to remap the Minecraft code to intermediary. Loom is also capable of remapping Java source code.+[[https://github.com/FabricMC/tiny-remapper|Tiny Remapper]] это инструмент, который может переназначать скомпилированный Java-код. Он имеет интерфейс командной строки, а также программируемый интерфейс. Loom использует Tiny Remapper для ряда задач, а Fabric Loader использует Tiny Remapper для ремаппинга кода Minecraft в промежуточный. Loom также способен ремаппнуть исходный код Java.
  
-==== Obfuscation and deobfuscation ====+==== Запутывание и распутывание ====
  
-Releases of Minecraft Java Edition are obfuscated jar files, which means they are compiled binaries stripped of any meaningful naming information, leaving only the bare logic behind. The motivation behind obfuscation is to prevent reverse engineering and to reduce file sizes. Java programs like Minecraft are rather simple to decompile, but the obfuscation is stripping away a lot of information that would be useful for modding purposes. One might wonder how it is possible to develop for Minecraft in the first place.+Выпуски Minecraft Java Edition представляют собой запутанные jar-файлы, что означает, что они представляют собой скомпилированные двоичные файлы, лишенные какой-либо значимой информации об именовании, оставляя только голую логику. Мотивация, лежащая в основе запутывания, заключается в предотвращении обратного проектирования и уменьшении размеров файлов. Java-программы, такие как Minecraft, довольно просты в декомпиляции, но запутывание удаляет много информации, которая была бы полезна для целей моддинга. Можно было бы задаться вопросом, как вообще возможно разрабатывать для Minecraft.
  
-Mappings like Yarn provide meaningful names for development. Using mappings it is possible to make sense of the Minecraft code and create mods for it. Mapping can provide names for classes, fields, methods, parameters, and local variables. It should be obvious these mappings are not perfect. Mapping the entirety of Minecraft involves a lot guesswork from multiple contributors. Mappings may be incomplete and sometimes change as more accurate names are found.+Маппинги, подобные Yarn, предоставляют значимые имена для разработки. Используя маппинги, можно разобраться в коде Minecraft и создать для него моды. Маппинг может предоставлять имена для классов, полей, методов, параметров и локальных переменных. Должно быть очевидно, что эти маппинги не идеальны. Маппинг всего Minecraft включает в себя множество догадок от нескольких участников. Маппинги могут быть неполными и иногда изменяться по мере нахождения более точных имен.
  
-==== Intermediary ====+==== Посредники (промежутки) ====
  
-A property of Minecraft's obfuscation is that it is not always consistent between Minecraft versions. A class may be called ''abc'' in one version of Minecraft, and ''abd'' in another. The same inconsistency applies to fields and methods. The inconsistency creates binary incompatibility between Minecraft versions.+Свойство запутывания Minecraft заключается в том, что оно не всегда согласуется между версиями Minecraft. Класс может называться ''abc'' в одной версии Minecraft и ''abd'' в другой. Такая же несогласованность применима к полям и методам. Несоответствие создает двоичную несовместимость между версиями Minecraft.
  
-Java code may be compiled for one version of a library and still work with another, making the two versions of the library binary compatible. Put simply, binary compatibility is achieved if the library exposes at least the same classes with the same methods and fields with the same names. The inconsistency in Minecraft's obfuscation presents a challenge when using Minecraft as a library for mods because of the lack of binary compatibility.+Код Java может быть скомпилирован для одной версии библиотеки и при этом работать с другой, что делает две версии библиотеки совместимыми в двоичном формате. Проще говоря, двоичная совместимость достигается, если библиотека предоставляет по крайней мере одни и те же классы с одинаковыми методами и полями с одинаковыми именами. Несоответствие в запутывании Minecraft представляет проблему при использовании Minecraft в качестве библиотеки для модов из-за отсутствия двоичной совместимости.
  
-Intermediary defines stable names for Minecraft's internals across Minecraft versions. The purpose of an Intermediary name is that it will always refer to the same class, field or method. Unlike Yarn names, Intermediary names are not meaningful and instead follow a numeric pattern like ''class_1234'', ''method_1234'' and ''field_1234''.+Посредник определяет стабильные имена для внутренних компонентов Minecraft в разных версиях Minecraft. Назначение промежуточного имени состоит в том, что оно всегда будет ссылаться на один и тот же класс, поле или метод. В отличие от имен Yarn, промежуточные имена не имеют смысла и вместо этого следуют числовому шаблону, такому как ''class_1234'', ''method_1234'' и ''field_1234''.
  
-Being a stable mapping, Intermediary can make Minecraft binary compatible across multiple versions (such as snapshot versions)! Compatibility is guaranteed only for the parts of the game that are unchanged between versions. When installed outside a development environment, Fabric Loader provides an environment with intermediary names by remapping Minecraft (and the Realms client) before the game is started. This can be observed by looking at a crash report from a production environment with Fabric Loader installed, which will contain intermediary names. Mods, compiled with intermediary names as applied by Loom, are naturally compatible with this environment.+Будучи стабильным маппинг, Посредник может сделать бинарный файл Minecraft совместимым с несколькими версиями (например, версиями снапшотов)! Совместимость гарантируется только для тех частей игры, которые не меняются между версиями. При установке вне среды разработки Fabric Loader предоставляет среду с промежуточными именами, переназначая Minecraft (и клиент Realms) перед запуском игры. Это можно увидеть, просмотрев краш-репорт из производственной среды с установленным загрузчиком Fabric, который будет содержать промежуточные имена. Моды, скомпилированные с промежуточными именами, применяемыми Loom, естественно, совместимы с этой средой.
ru/tutorial/mappings.1645561140.txt.gz · Last modified: 2022/02/22 20:19 by furnygo