Изменение модификаций
Last updated
Last updated
Когда 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 сохраняет русский текст в юникоде, например вот так:
Такой текст неудобно менять, но, в теории, это должно помочь избежать ошибок на запуске модификации.
Vineflower и Procyon сохраняют русский текст как есть:
Теперь откройте метод в обзорщике щелчком ПКМ по методу → Edit → Edit method in assembler.
Настоятельно советуем менять именно метод класса, а не весь класс, чтобы он не сломался на экспорте.
Теперь осталось только поменять нужные строчки:
Перепишите текст, не трогая кавычки.
Сохраните изменения — горячая клавиша CTRL+S.
Далее вы можете перейти или к изменению следующего класса, или к экспортированию класса с изменениями.
Далее, вам потребуются программы, способные открыть .jar-файл в виде списка. Вы можете воспользоваться одним из представленных архиваторов или любым другим, на ваше усмотрение.
Пройдите по тому же пути, в котором вы изменили класс и замените старый класс на новый.
В нашем случае путь будет таким:
AFMP_forge_1.19.2.jar/net/hstudios/afmpafewmoreplushies/block
И что же, всё получилось!
Осталось экспортировать ещё десяток классов… по одному?
Нет! Вы можете сначала внести изменения для всех классов, а потом экспортировать вместе, чтобы не пришлось делать это каждый раз заново.
Чтобы экспортировать классы вместе:
Щёлкните ПКМ по папке, в которой находятся изменённые классы.
Нажмите «Export package».
Дайте название сохраняемому пакету.
Чтобы использовать сохранённый пакет для изменения .jar-файла:
Откройте пакет с помощью архиватора.
Извлеките оттуда папку net.
Поместите папку net в корень .jar-файла, открытого архиватором.