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

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

Когда Recaf наконец-то запущен, мы можем перейти к самому изменению. Примером работы станет AFMP: A few more plushies[3] версии 1.19.2

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

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

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

Поиск строки

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

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

  • Весь код таких строк находится в классах;

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

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

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

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

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

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

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

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

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

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

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

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

  • Для большей совместимости: оставьте CFR

  • Для удобства: Procyon или Vineflower (Vineflower > Procyon)

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

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

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

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

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

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

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

  1. Перепишите текст, не трогая кавычки.

  2. Сохраните изменения — горячая клавиша CTRL+S.

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

Изменение .jar

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

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

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

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

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

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

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

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

  1. Щёлкните ПКМ по папке, в которой находятся изменённые классы.

  2. Нажмите «Export package».

  3. Дайте название сохраняемому пакету.

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

  1. Откройте пакет с помощью архиватора.

  2. Извлеките оттуда папку net.

  3. Поместите папку net в корень .jar-файла, открытого архиватором.

Last updated