> For the complete documentation index, see [llms.txt](https://wiki.aegis-mine.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.aegis-mine.ru/articles/perevod-modifikacii/perevod-s-pomoshyu-recaf/izmenenie-modifikacii.md).

# Изменение модификаций

## **Определение цели**

Когда Recaf наконец-то запущен, мы можем перейти к самому изменению. Примером работы станет [AFMP: A few more plushies](https://www.curseforge.com/minecraft/mc-mods/afmp-a-few-more-plushies)[\[3\]](https://word2md.com/#footnote-3) версии 1.19.2

Сначала выберем цель для перевода:

Допустим, надо перевести описание этого плюшевого аксолотля. К сожалению, автор добавил строки локализации только для названий, так что описание поменяем сами.

Быстро открыть модификацию в Recaf можно просто перетащив файл в окно программы:

<div align="left"><figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2FkivF9Gqh5lf1I6vR74UL%2FAfter.png?alt=media&amp;token=c5ccab5d-1c08-4bb1-b8f4-3d21d386f3e4" alt=""><figcaption></figcaption></figure></div>

<figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2FJmAm6hDhRXVbGcV2yps8%2FDragAndDrop.gif?alt=media&amp;token=445812e5-f4e7-4d5a-b9c3-c7ae487fcc43" alt=""><figcaption></figcaption></figure>

## **Поиск строки**

После того, как вы открыли модификацию, надо найти строку, которую необходимо перевести.

Что нужно знать, чтобы найти строчку описания предмета плюшевой игрушки:

* Весь код таких строк находится в классах;
* Плюшевая игрушка аксолотля — блок, следовательно, ищем игрушку в классах блоков (папка block).

Если бы это был предмет, например, кирка, мы искали бы его в классах предметов (папка item);

* ID плюшевой игрушки — `afmp_a_few_more_plushies:axolot` (чтобы посмотреть, нажмите F3+H в игре вне инвентаря, ID будет отображаться во всплывающей подсказке на предмете), значит, класс будет иметь axolot в названии.

Лучше использовать именно способ через ID, потому что иногда название предмета не совпадает с ID;

* $1, $2 и т.д — это анонимные классы, они нам не нужны.

Строка в классе нашлась довольно просто, но зачастую она находится намного глубже.

<div align="left"><figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2FjcB4aZrjhlU6D2d3mT5e%2FNavigateThroughMod.gif?alt=media&amp;token=e803fed9-6270-4d7b-ae9a-b48364089e6a" alt=""><figcaption></figcaption></figure></div>

Чтобы найти строчку в классе лучше использовать поиск — горячая клавиша CTRL+F.

<figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2F9pVPSESyuErVgep14mCW%2FChoosingMethod.gif?alt=media&amp;token=9d2dd0cf-517a-427d-bcbf-8e60fe6a0392" alt=""><figcaption></figcaption></figure>

## Изменение метода

Заметьте, что строчка описания плюшевой игрушки находится в коде не сама по себе, а под так называемой «крышей» — методом класса.

Не будем вдаваться в особенности работы кода, нам нужно лишь название метода, чтобы его изменить. В нашем случае, название метода — «m\_5871\_»

Откройте обзорщик полей и методов класса справа, чтобы найти метод.

<div align="left"><figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2F1OhFRgNqykno2WQ2yEc2%2FEditingMethod.gif?alt=media&amp;token=0bd3cb10-77ab-410e-b6e0-0e6d37d7057c" alt=""><figcaption></figcaption></figure></div>

Итак, перед тем, как поменять метод класса, в котором находится нужная нам строка вам необходимо поменять декомпилятор:

* Для **большей совместимости**: оставьте CFR
* Для **удобства**: Procyon или Vineflower (Vineflower > Procyon)

Разница декомпиляторов в том, что CFR сохраняет русский текст в юникоде, например вот так:&#x20;

```
\u041f\u0440\u0438\u0432\u0435\u0442\u0021
```

Такой текст неудобно менять, но, в теории, это должно помочь избежать ошибок на запуске модификации.

Vineflower и Procyon сохраняют русский текст как есть:

<div align="left"><figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2Fd9TgHSHGBHczpNMiSPLP%2FChangingDecompiler.gif?alt=media&amp;token=de834be1-00b0-4b50-ac3d-fb6e9af79241" alt=""><figcaption></figcaption></figure></div>

Теперь откройте метод в обзорщике щелчком ПКМ по методу → Edit → Edit method in assembler.

<figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2FCjs9tDqxRGsH75EXxPmB%2FOpeningAssembler.gif?alt=media&amp;token=226438f6-0cbb-4051-86d7-dba6ad68d14f" alt=""><figcaption></figcaption></figure>

Настоятельно советуем менять именно метод класса, а не весь класс, чтобы он не сломался на экспорте.

Теперь осталось только поменять нужные строчки:

1. Перепишите текст, **не трогая кавычки.**
2. Сохраните изменения — горячая клавиша CTRL+S.

Далее вы можете перейти или к изменению следующего класса, или к экспортированию класса с изменениями.

### **Изменение .jar**

Далее, вам потребуются программы, способные открыть .jar-файл в виде списка. Вы можете воспользоваться одним из представленных архиваторов или любым другим, на ваше усмотрение.

<div align="left" data-full-width="false"><figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2FDL7h9LsOkZDP6arFBggf%2FArchivers.jpg?alt=media&amp;token=4d69b8db-b210-405e-9a05-13f002ec4265" alt="" width="288"><figcaption></figcaption></figure></div>

Пройдите по тому же пути, в котором вы изменили класс и замените старый класс на новый.

**В нашем случае путь будет таким:**

`AFMP_forge_1.19.2.jar/net/hstudios/afmpafewmoreplushies/block`

И что же, всё получилось!

<div align="left"><figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2FfhoTFfQn2E5R650GWuoR%2FBefore.png?alt=media&amp;token=3c4cdd2e-8cb1-4454-b1ce-835e27da8d9c" alt=""><figcaption></figcaption></figure></div>

Осталось экспортировать ещё десяток классов… по одному?

Нет! Вы можете сначала внести изменения для всех классов, а потом экспортировать вместе, чтобы не пришлось делать это каждый раз заново.

**Чтобы экспортировать классы вместе:**

1. Щёлкните ПКМ по папке, в которой находятся изменённые классы.
2. Нажмите «Export package».
3. Дайте название сохраняемому пакету.

<figure><img src="https://88247998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwIhyvBxJYLfHMqS8tmat%2Fuploads%2F06RuETkoy1WwoUGwn7ms%2FNavigateThroughMod.gif?alt=media&amp;token=3afcf200-106f-4228-978e-df704156f835" alt=""><figcaption></figcaption></figure>

**Чтобы использовать сохранённый пакет для изменения .jar-файла:**

1. Откройте пакет с помощью архиватора.
2. Извлеките оттуда папку net.
3. Поместите папку net в корень .jar-файла, открытого архиватором.<br>
