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

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

Когда 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="/files/WxEQajLx9ZLKzRT7aH1n" alt=""><figcaption></figcaption></figure></div>

<figure><img src="/files/qDdydAg9gtGBONQrzF7e" 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="/files/82AqbOh1XHbeEgzXpzlM" alt=""><figcaption></figcaption></figure></div>

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

<figure><img src="/files/PS7dvdxRkT5CS2OtQI1u" alt=""><figcaption></figcaption></figure>

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

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

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

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

<div align="left"><figure><img src="/files/kAPIqsVqea0x35v4L6bO" 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="/files/PzfzXJuSvJZCMCA0Htmk" alt=""><figcaption></figcaption></figure></div>

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

<figure><img src="/files/pHV4mhjZhu2xmgLlmqx5" alt=""><figcaption></figcaption></figure>

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

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

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

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

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

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

<div align="left" data-full-width="false"><figure><img src="/files/HMZsRAkozI1eOnTqt8ZD" alt="" width="288"><figcaption></figcaption></figure></div>

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

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

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

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

<div align="left"><figure><img src="/files/cUXgZlXWj9I0XiFQz8aH" alt=""><figcaption></figcaption></figure></div>

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

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

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

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

<figure><img src="/files/5IVnaLyBFID2D6zzhIZL" alt=""><figcaption></figcaption></figure>

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.aegis-mine.ru/articles/perevod-modifikacii/perevod-s-pomoshyu-recaf/izmenenie-modifikacii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
